我有一个查询,其中我正在对日期和时间列的数据进行排序。我有五个具有相同日期和时间的记录。所有记录都按照排序和主键正常排列。但我添加的最后一条记录跳到了该位置的顶部。我不知道为什么会发生这种情况。
我的查询是:
SELECT table1.* , table2.name AS name1, table2.date AS date1,
table2.start_time AS time1, table2.end_time AS time2
FROM table1 LEFT JOIN
table2
ON table2.id = table1.id1
WHERE table1.id2 = '604'
ORDER BY table1.date ASC, table1.start_time ASC
另附上记录截图。顶部记录具有最新的 ID,但它位于顶部。图像中的所有这些记录都具有相同的日期和时间。
最佳答案
我不能 100% 确定您为何感到困惑。如果五行上的date
和time
列都具有相同的值,则可以按任意顺序返回它们。
如果您还希望按 id
排序,请将其包含在 order by
中:
ORDER BY table1.date ASC, table1.start_time ASC, table1.id
您似乎对 order by
有一些“稳定”排序的概念。稳定排序是指对于具有相同值的键,保持数据的原始顺序。然而,这在 SQL 中是不可能的,因为表代表无序集。没有order by
就没有排序。
关于MySQL ORDER BY 子句行为不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33344174/