sql日期顺序问题

时间:2010-01-13 20:39:39

标签: date mysql

我有图像表,它有2行或更多行具有相同的日期..现在即可通过created_date DESC进行排序,它工作正常并显示相同位置的行,但是当我更改查询并再试一次时,它显示不同的位置..并且没有我没有任何其他的字段顺序,所以我有点困惑为什么它这样做,我该如何解决它。

你能帮忙解决这个问题。

3 个答案:

答案 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列中的值不是唯一的,因此没有定义的顺序。如果您希望该列为“唯一”,则可以将其定义为时间戳。