关于groupby 与limit何用的注意事项

在Mysql中我们常常用order by来进行排序,使用limit来进行分页,当需要先排序后分页时我们往往使用类似的写法select * from 表名 order by 排序字段 limt M,N。但是这种写法却隐藏着较深的使用陷阱。在排序字段有数据重复的情况下,会很容易出现排序结果与预期不一致的问题。
user表共有8条数据,有4页数据,但是实际查询过程中第一页与第四页竟然出现了相同的数据。
如果想在Limit存在或不存在的情况下,都保证排序结果相同,可以额外加一个排序条件。例如id字段是唯一的,可以考虑在排序字段中额外加个id排序去确保顺序稳定。
所以上面的情况下可以在SQL再添加个排序字段,比如fund_flow的id字段,这样分页的问题就解决了。修改后的SQL可以像下面这样: SELECT * FROM user ORDER BY create_time,id LIMIT 6,2;

猜你喜欢

转载自www.cnblogs.com/zhudingsheng/p/10319529.html
今日推荐