我正在尝试了解导致以下情况的原因,也许你可以帮助我:
我有一个查询,例如:
select field1,fieldDate from table1
union all
select field1,fieldDate from table2
order by fieldDate desc
另一个是这样的:
select field1,field2,fieldDate from table1
union all
select field1,field2,fieldDate from table2
order by fieldDate desc
所以基本上它们是相同的,除了在第二个我检索一个额外的字段。
现在,两个结果都有不同的排序,但只是针对日期完全相同的情况。例如,有 2 行 (row1,row2),日期为 2009-11-25 09:41:55。对于查询 1,row1 位于 row2 之前,对于查询 2,row2 位于 row1 之前。 有人知道为什么会发生这种情况吗?
谢谢, 问候
最佳答案
基于您未明确排序的任何字段的排序是未定义的,如果优化器认为这会产生更好的执行计划,则可以更改排序。给定 order by 字段中具有完全相同值的两行,您不能依赖它们之间的任何特定顺序,除非您明确地按具有不同值的另一个字段进行排序。
关于mysql union 语句与 order by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1840008/