ati*_*ing 15 mysql sql-order-by
在我的数据库中,我有一些记录,我按照恰好相同的值进行排序:
| col1 | timestamp |
| row1 | 2011-07-01 00:00:00 |
| row2 | 2011-07-01 00:00:00 |
| row3 | 2011-07-01 00:00:00 |
SELECT ... ORDER BY timestamp
Run Code Online (Sandbox Code Playgroud)
看起来结果是随机顺序.随机顺序是否一致.这意味着如果我在两个mysql服务器中有这些数据.我可以期待相同的结果吗?
Dam*_*ver 10
我建议不要做出这个假设.在标准SQL中,explicit ORDER BY子句不需要的任何内容都取决于实现.
我不能说MySQL,但是在例如SQL Server上,到目前为止"相等"的行的输出顺序ORDER BY可能会在每次查询运行时发生变化 - 并且可能受到几乎任何事情的影响(例如补丁/服务器的Service Pack级别,工作负载,当前位于缓冲池中的页面等).
因此,如果您需要特定订单,那么您可以做的最好的事情(保证它,并为未来的维护者记录您的查询)明确请求您想要的订单.
已有很多答案,但底线答案是否定的.
如果您希望以特定顺序返回的行一致,则在一个中指定ORDER BY.没有它,绝对没有保证将返回什么订单行.
我认为您可能缺少的是ORDER BY子句中可以列出多个表达式.并且您可以包含不在SELECT列表中的表达式.
例如,在您的情况下,您可以使用ORDER BY timestamp, id.
(或其他一些列或表达式.)
这将首先在时间戳上对行进行排序,然后对时间戳具有相同值的任何行将id按此排序,或者列表中的下一个表达式.