我有这样的查询:
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的结果?
答案 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
。