MySQL ORDER BY子句行为不正确

时间:2015-10-26 11:05:46

标签: 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

1 个答案:

答案 0 :(得分:1)

我不是百分百肯定你为什么感到困惑。如果五行中的timeid列都具有相同的值,则可以任何顺序返回它们。

如果您还希望按order by排序,请将其包含在ORDER BY table1.date ASC, table1.start_time ASC, table1.id 中:

order by

您似乎对order by有一些“稳定”排序的概念。对于具有相同值的键,稳定排序是保持数据的原始排序的排序。但是,这在SQL中根本不可能,因为表表示无序集。没有property(x => x.MemberID).HasDatabaseGeneratedOption( DatabaseGeneratedOption.None); 没有订购。