MySQL ORDER BY 子句行为不正确

标签 mysql sql-order-by

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

我的查询是:

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,但它位于顶部。图像中的所有这些记录都具有相同的日期和时间。

enter image description here

最佳答案

我不能 100% 确定您为何感到困惑。如果五行上的datetime 列都具有相同的值,则可以按任意顺序返回它们。

如果您还希望按 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/

相关文章:

mysql - 在协会中继承帮助

MySQL - 表 2 列值总和显示所有表 1 描述

mysql - 如何将图片保存到数据库而不破坏图片?

php - 存储不变数据的最佳方式

mysql 在 LEFT JOIN 条件下从别名结果中选择数据

MySQL ORDER BY 返回可变长度字符串的错误结果

php - mysql/php 中的多级菜单

sql - 子查询中的顺序是否保证得到保留?

php - Mysql按日期排序不按预期工作

mysql - mysql中的多个order by数据显示不正确