Mysql 按查询嵌套的订单在不同的机器上显示不同的结果
我有这样的疑问:Mysql 按查询嵌套的订单在不同的机器上显示不同的结果,mysql,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
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一样获得结果 正如您所写的那样,内部ORDER BY毫无意义,只有外部查询中的ORDER BY才会被接受。此外,我甚至看不到子查询的意义,因此只需使用以下命令:
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;
SQL表是根据无序的记录集建模的,通常没有内部顺序。您所做的内部顺序不会保持不变,MySQL可以在外部查询中自由返回它想要的任何顺序,因为您没有在那里使用ORDER BY