如图所示。他的列表按照这样查询出来的
SELECT * FROM content WHERE ORDER BY sort asc,cid DESC;
现在要获取下一条到底怎么办,因为发现普通的 cid<int 根本取不对,因为还要考虑sort的字段
但是sort的字段是很极端的,客户有可能不填的
如图所示。他的列表按照这样查询出来的
SELECT * FROM content WHERE ORDER BY sort asc,cid DESC;
现在要获取下一条到底怎么办,因为发现普通的 cid<int 根本取不对,因为还要考虑sort的字段
但是sort的字段是很极端的,客户有可能不填的
我觉得可以利用视图,将
SELECT * FROM content WHERE ORDER BY sort asc,cid DESC;
引入伪列@rownum
。
然后每次取得一条记录顺便记下这个伪列。
参考:http://blog.csdn.net/ystyaoshengting/article/details/6904627
MySQL中根据ID查询指定记录(id为1024)的上一条记录和下一条记录:
上一条 SELECT * FROM posts WHERE id < 1024 ORDER BY id DESC LIMIT 1;
下一条 SELECT * FROM posts WHERE id > 1024 ORDER BY id LIMIT 1;
或者试试:
上一条
select * from content where cid =
(select max(cid) from content where cid < 1024 order by sort asc, cid desc);
下一条
select * from content where cid =
(select min(cid) from content where cid > 1024 order by sort asc, cid desc);
5 回答1.5k 阅读
2 回答2.2k 阅读
3 回答767 阅读✓ 已解决
1 回答1k 阅读
1 回答695 阅读✓ 已解决
1 回答994 阅读
1 回答868 阅读
写个存储过程把以上结果插入到一个临时表,用游标循环临时表取每一条记录就行了,我没太明白你的取下一条是什么意思