在开发中,我需要将 MySQL 数据库中的数据根据时间排序后,再分页获取数据。例如,我需要将下列数据根据 saleDate 排序后,再获取前5个或者 6至10个。
完整的 SQL 语句
set @PageStart=5*0;
SELECT * FROM (
SELECT @rownum:=@rownum+1 AS rownum, A.* FROM (
SELECT @rownum:=0
) r, tbl_name A order by saleDate desc
) as tmp WHERE rownum > 5*@PageStart AND rownum <= @PageStart+5;
以上语句分为三部分:
set @PageStart=5*0;
以上语句是声明一个变量,表示每一页的开始位置。
SELECT @rownum:=@rownum+1 AS rownum, A.* FROM (SELECT @rownum:=0) r, tbl_name A order by saleDate desc
以上语句中会将表中的数据根据 saleDate 进行反序,并且会对每一行生成一个编号,生成的编号就是 rownum。
SELECT * FROM(...) as tmp WHERE rownum > 5* @PageStart AND rownum <= @PageStart +5
以上语句会将上面语句查询到的数据进行剔除,获取 @PageStart 为开始,数量为5条的数据。
最终查询结果如下:
最后
由于本人能力有限,方法不是很好。如有问题欢迎指出。
如需转载请保留该声明文本出自《舍予书》