mysql 查询条件降序,数据重复问题

2019-08-17 04:23:57 +08:00
 flyme6

根据时间进行降序查询,(其中时间都是一样的),这时候分页,会出现数据重复,其中表中数据肯定是不重复的。

3015 次点击
所在节点    程序员
17 条回复
zcmxw1
2019-08-17 05:54:33 +08:00
sql 语句问题吧?
wangsongyan
2019-08-17 07:02:32 +08:00
limit,offset 没算对?
yidinghe
2019-08-17 07:23:18 +08:00
跟排序没关系,查询本身的问题
PHPJit
2019-08-17 08:22:13 +08:00
当你点击下一页的时候,这个时候有新数据进来了。
twocold0451
2019-08-17 08:33:27 +08:00
再加个其他排序条件,Oracle 遇到过这个问题
xuanbg
2019-08-17 08:38:47 +08:00
4 楼正解,需要额外的条件才能避免这个问题
ilovetm
2019-08-17 08:43:25 +08:00
order by 应该使用多个字段,确认唯一性
dgjungle
2019-08-17 08:44:59 +08:00
group by 也可以保证唯一性呀
lxy42
2019-08-17 11:00:26 +08:00
当排序字段有重复值时,顺序是不确定的。
cyssxt
2019-08-17 11:13:27 +08:00
这个肯定是 sql 的问题,查一下关联表 join 之类的逻辑
xujif
2019-08-17 12:13:52 +08:00
信息流应用很少用传统的 page 分页,用递增 id 排序。
hhyvs111
2019-08-17 13:49:43 +08:00
可能这个时候被删了一些数据,然后分页计算失误
pussy2019
2019-08-17 13:57:11 +08:00
ORDER BY `created_at` ASC,`id` ASC
reus
2019-08-17 13:59:18 +08:00
既然时间一样,那对时间排序,就等于没有排序,顺序就可以认为是随机的,分页当然不能正确了

应该有一个兜底的排序字段,一般都是用唯一字段,例如自增 id
mmdsun
2019-08-17 14:50:31 +08:00
MySQL oder by 与 limit 合用会出现这个问题。
waytodelay
2019-08-17 17:06:50 +08:00
mysql 遇到和你一模一样的问题,排序字段只有时间而且时间有超过分页参数的重复,分页就出问题了,这时加个 id 排序就不会出问题了
flyme6
2019-08-19 19:07:53 +08:00
@reus 有道理,多谢多谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/592609

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX