如题疑问, 搜索各种答案始终无果,感觉智商受到了暴击,没找到一个告诉我如何在ID不连续的时候进行分页查询的。
问题背景:
mysql数据库中分页查询测试时,发现被删除的记录ID不再连续了。比如你的mysql数据库中有10条记录,id本来是1到10连续的,假如你删除了第3条,那么id就会变成,1,2,4,5,6,7,8,9,10九条记录。
此刻你还是按照
select * from table where id > (pageNo-1)*pageSize limit pageSize;
查询的结果就不准确了。
怎么办?怎么办?怎么办?查了好多都是用limit,这个我知道,但是性能不要了吗?
感觉那些人只是为了答题而答题。生产中你是不是也按你说的那样搞?数据量大了咋办?
如标题,查完我就愤怒了,只能自己想思路,然后查如何实现自己的思路。
最终还是结合一些提示思考出了如何在ID主键不连续的时候正确分页。
select * from table_name where id in (select id from (select * from (select @i:=@i+1 as new_id,id from table_name, (select @i:=0) as it order by id asc) as t where t.new_id > (pageNo-1)*pageSize limit pageSize) as t1)
套用上面的sql语句,把黑色斜体换成你自己的表名,页数,页面大小试试。
这样既有效率又可以在ID不连续的情况下正确查询了。
希望可以帮到和我一样的人。