MySQL ORDER BY 子句行为不正确

MySQL ORDER BY clause not behaving correctly

我有一个查询,我在其中对日期和时间列的数据进行排序。我有五个具有相同日期和时间的记录。根据排序和主键,所有记录都很好。但是我添加的最后一条记录跳到了该位置的顶部。我不知道为什么会这样。

我的查询是:

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% 确定你为什么感到困惑。如果五行的datetime列都具有相同的值,则可以按任意顺序返回。

如果您还希望它们按 id 排序,则将其包含在 order by 中:

ORDER BY table1.date ASC, table1.start_time ASC, table1.id

您似乎对 order by 的 "stable" 排序有些概念。对于具有相同值的键,稳定排序是保持数据的原始顺序的排序。然而,这在 SQL 中根本不可能,因为表表示 无序 集合。没有 order by.

就没有排序