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語句)更加靈活,因為你可以對整個合併後的結果集進行排序。
'