我有图像表,它有2行或更多行具有相同的日期..现在即可通过created_date DESC进行排序,它工作正常并显示相同位置的行,但是当我更改查询并再试一次时,它显示不同的位置..并且没有我没有任何其他的字段顺序,所以我有点困惑为什么它这样做,我该如何解决它。
你能帮忙解决这个问题。答案 0 :(得分:5)
要获得可重现的结果,您需要在order by子句中包含一些唯一的列。你有ID栏吗?您可以使用它来打破平局:
ORDER BY created_date DESC, id
答案 1 :(得分:1)
我怀疑这种情况正在发生,因为MySQL没有给出除ORDER BY created_date DESC
以外的任何排序信息,所以它根据其复杂的内部工作(缓存,索引等)做了最方便的MySQL。假设您有一个唯一键id
,您可以这样做:
SELECT * FROM table t ORDER BY t.created_date DESC, t.id ASC
每次都会给你相同的结果,因为在ORDER BY
后面的参数中加上一个逗号会给它一个二级排序规则,当第一个排序规则在两行之间没有产生明确的顺序时执行该规则。
答案 2 :(得分:1)
要获得一致的结果,您需要在“ORDER BY”子句中添加至少更多列。由于created_date列中的值不是唯一的,因此没有定义的顺序。如果您希望该列为“唯一”,则可以将其定义为时间戳。