MySQL, Incorrect usage of UNION and ORDER BY

emanlee發表於2024-10-02

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

'

相關文章