mysql获取第8大的id.

mysql获取第8大的id.,第1张

用一条sql语句肯定无法实现你要达到的目的,你可以先按照id排序 返回前七条信息的id然后再次查询的时候查询 8条信息,然后去除掉前七条信息id 就行了,不过这个得需要程序辅助完成(我用PHP的) 方法三 是纯sql实现 但获取必须是程序获取

例如:

方法一 使用程序去除重复值

$sql = 'select id from pro order by id desc limit 7'

$query = $db->query($sql)

$arr_id = array()

while($db_rec = $db->fetch_array($query)){

$arr_id[] = $db_rec['id']

}

unset($sql,$query)

$sql = 'select id from pro order by id desc limit 8

$query = $db->query($sql)

$arr_id2 = array()

while($db_rec = $db->fetch_array($query)){

$arr_id2[] = $db_rec['id']

}

unset($sql,$query)

注:此处使用数组函数去除重复值,$db 是我实例化的一个对象,query和 fetch_array 都是对象方法

$id = array_diff($arr_id2,$arr_id)

方法二: 使用sql来完成

$sql = 'select id from pro order by id desc limit 7'

$query = $db->query($sql)

$arr_id =$comma = ''

while($db_rec = $db->fetch_array($query)){

$arr_id .= $comma.$db_rec['id']

$comma = ','

}

unset($sql,$query,$db_rec)

$sql = 'select id from pro where id not in('.$arr_id.') order by id desc limit 1

$query = $db->query($sql)

$id = ''

if($db_rec = $db->fetch_array($query)){

$id = $db_rec['id']

}

unset($sql,$query,$db_rec)

方法三: 使用纯sql实现

$sql ='select id from pro where id not in(select id from pro order by id desc limit 7) order by id desc limit 1 '

$query = $db->query($sql)

$id = ''

if($db_rec = $db->fetch_array($query)){

$id = $db_rec['id']

}

unset($sql,$query,$db_rec)

注:如果你的mysql 是4 版本的话 方法三应该是不可以的 ,4不支持 子查询 我记得是

最后的$id 就是你想要的 第八个ID号 即第八大的ID值

$sql_exist="select * from ".C('blog_info')." where title='$title'"$count1 =$Info_obj->execute($sql_exist)if(empty($count1)){ $checkadmin=new Modelimport('Think.Util.Input')//调用当前Session值。 $adminuser=trim(Session::get(C('USER_AUTH_NAME')))//echo $adminuser//echo llldate_default_timezone_set("PRC")$act_time=date("Y-m-d H:i:s")$sql="insert into ".C('blog_info')." set title='$title',content='$content'"//$id=mysql_insert_id()$action="添加了id为".$id."的记录"$in_log="insert into ".C('blog_log')." set adduser='$adminuser',action='".$action."',act_time='$act_time'"$count =$Info_obj->execute($sql)$count2=$Info_obj->execute($in_log)if(!empty($count)&&!empty($count2)){ //$s_log =$Info_obj->query($sql_log)$Info_obj->commit()return $count} else{ $Info_obj->rollbackreturn 3} //return $s_log}else{ return 3}用mysql_insert_id()是在第一条数据执行之后生成的, 事务处理时 两条sql是同时进行。 这样就获取不到ID值。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7453166.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存