MySQL, Incorrect usage of UNION and ORDER BY
MySQL, Incorrect usage of UNION and ORDER BY
错误解释:
MySQL中,当你在使用UNION合并查询结果的时候,如果直接在最后使用ORDER BY对整个合并后的结果进行排序,可能会遇到这个错误。这是因为UNION操作本身就会产生一个临时表,而在这个临时表上应用ORDER BY是不允许的。你需要对UNION的每个单独的查询使用ORDER BY,或者在整个合并后的结果上使用一个外层的SELECT语句来进行排序。
解决方法:
对UNION的每个单独查询使用ORDER BY:
(SELECT column1 FROM table1 ORDER BY column1)
UNION
(SELECT column1 FROM table2 ORDER BY column1)
使用外层的SELECT语句进行排序:
SELECT * FROM (
SELECT column1 FROM table1
UNION
SELECT column1 FROM table2
) AS temp_table
ORDER BY column1;
选择上述两种方法中的任意一种来解决问题。通常情况下,第二种方法(使用外层的SELECT语句)更加灵活,因为你可以对整个合并后的结果集进行排序。
'