mysql union 语句与 order by

标签 mysql

我正在尝试了解导致以下情况的原因,也许你可以帮助我:

我有一个查询,例如:

 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/

相关文章:

MYSQL 连接最大长度

php - 将id插入MYSQL表进行多图片上传(民宿)

php - 使用 $.ajax 请求使用 PHP 到 MYSQL 数据库的 jQuery 表单处理

mysql - 不使用 join 将两个表合二为一

MySQL 唯一键而不是 PK

php - 如何在一个查询中更新多行

php - 基于用户选项的 PHP 动态 SQL SELECT 语句

mysql - sqlalchemy Pyramid 查询keyerror

php - 将大量 Excel 数据插入 MySQL 数据库

具有多表查询的 PHP 邮件功能