嵌套Order By Query在不同的机器上显示不同的结果

时间:2018-03-09 07:38:01

标签: mysql

我有这样的查询:

SELECT * FROM (
    SELECT * FROM (
       SELECT 1 AS a,1 AS b
       UNION
       SELECT 2 AS a,1 AS b
       UNION
       SELECT 3 AS a,2 AS b
       UNION
       SELECT 3 AS a,1 AS b
    ) b ORDER BY b.b DESC
) c

它在不同的机器上显示不同的结果,

在机器A上:

A  |  B
--------
3  |  2
1  |  1
2  |  1
3  |  1

在机器B上:

A  |  B
--------
1  |  1
2  |  1
3  |  2
3  |  1

我期待所有机器都能像机器A一样得到结果。怎么会发生?在mysql服务器上是否有任何设置使所有机器得到机器A的结果?

1 个答案:

答案 0 :(得分:1)

内部@define_syslog_variables();在编写时没有意义,只有外部查询的ORDER BY才会被尊重。另外,我甚至没有看到子查询的重点,所以只需使用它:

ORDER BY

SQL表是在无序的记录集之后建模的,通常没有内部订单。您正在做的内部SELECT * FROM ( SELECT 1 AS a, 1 AS b UNION SELECT 2, 1 UNION SELECT 3, 2 UNION SELECT 3, 1 ) t ORDER BY b DESC; 并不“坚持”,并且MySQL可以自由地在外部查询中返回它想要的任何订单,因为您没有在那里使用ORDER BY