来源: mysql查询某个id在表中是第几条数据,并且在第几页_sql 查询某条记录在第几页_小黑雷的博客-CSDN博客
对于一般的企业站内说文章不多但是设计中详情又有返回,可能很多都是记录的,这条数据在第几页。但是还有一种情况如果还有上一篇下一篇,刚好这篇文章在当前页的最后一篇那返回就没有效果了
例如我有表a,
字段有:id int(key),title varchar(64) (文章标题),category int(类别), is_top char(1)(是否置顶),toptime int(置顶时间)
解决方法1:
需要知道这篇文章在文章列表第几条
这时候需要用到mySQL一个函数@rownum 这个就是前面的序号
SELECT id, @rownum := @rownum +1 AS rowsnumber
FROM a, (SELECT@rownum :=0) r
WHERE category = ‘3’
order by is_top desc,toptime desc,id desc
现在知道了在表中第几条了
这时候需要知道第几页用到mySQL函数ceil()/celing()
假设每页5条查询id为106的在第几页结合上面的sql
select rowsnumber from (SELECT id, @rownum := @rownum +1 AS rowsnumber
FROM a, (SELECT@rownum :=0) r
WHERE category = ‘3’
order by is_top desc,toptime desc,id desc) as a where a.id=106
上一页下一页
select * from (SELECT id,title, @rownum := @rownum +1 AS rowsnumber
FROM a, (SELECT@rownum :=0) r
WHERE category = ‘3’
order by is_top desc,toptime desc,id desc) as a where
a.rowsnumber =”上一页带入上面sql返回条数-1,下一页带入上面sql返回条数+1″
解决方法2:
思路就是在详情页的时候带上第几页,那么返回按钮就知道返回第几页数据了,
上一篇下一篇获取在第几条
结合方法一@rownum用法
例如表中有1,2,3,4,5,6,7条数据,第7条置顶了刚好查看的这篇文章id为4
mysql查询第一页数据每页5条
SELECT id,title, @rownum := @rownum +1 AS rowsnumber
FROM a, (SELECT@rownum :=0) r
WHERE category = ‘3’
order by sticky desc,id desc,stickTime desc limit 0,5
在使用代码处理,下面是php代码
例如查询结果为$data
$rowsnumber=array_reduce($data,function($a,$b) use ($id){
if($b[‘id’]==$id){
$a=$b[‘rowsnumber’];
}
return $a;
},0 );
switch(true){
case $rowsnumber=5:
$lastnews=array_reduce($data,function($a,$b) use ($rowsnumber){
if($b[‘rowsnumber’]==($rowsnumber-1)){
$a=$b;
}
return $a;
},array() );
$nextnews=array();//这里药反查下一页第一条
break;
case $rowsnumber>1 and $rowsnumber<5:
foreach($data as $val){
if($val[‘rowsnumber’] == ($rowsnumber – 1)){
$lastnews=$val;
}
if($val[‘rowsnumber’] == ($rowsnumber + 1)){
$nextnews=$val;
}
}
break;
case $rowsnumber=5:
$nextnews=array_reduce($data,function($a,$b) use ($rowsnumber){
if($b[‘rowsnumber’]==($rowsnumber+1)){
$a=$b;
}
return $a;
},array() );
$lastnews=array();//这里药反查上一页最后一条
break;
}
csdn编辑器没有提示代码可能写的有错误,写的不好望见谅,只是突然想到写一下。
————————————————
版权声明:本文为CSDN博主「小黑雷」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010757785/article/details/85098243