在 UNION 查詢中實作 Order By
在資料庫程式設計中,UNION 查詢將來自不同資料表或子查詢的結果組合在一起。但是,當從多個表提取資料並需要排序結果時,直接在 UNION 語句中使用 ORDER BY 可能會導致異常。如下例所示:
<code class="language-sql">SELECT table1.field1 FROM table1 ORDER BY table1.field1 UNION SELECT table2.field1 FROM table2 ORDER BY table2.field1</code>
此查詢將會失敗,尤其是在使用 MS Access Jet 資料庫引擎時。解決方法在於將每個子查詢用其自身的 ORDER BY 子句括起來:
<code class="language-sql">SELECT * FROM ( SELECT table1.field1 FROM table1 ORDER BY table1.field1 ) DUMMY_ALIAS1 UNION ALL SELECT * FROM ( SELECT table2.field1 FROM table2 ORDER BY table2.field1 ) DUMMY_ALIAS2</code>
透過將子查詢用括號括起來並為其分配別名(DUMMY_ALIAS1 和 DUMMY_ALIAS2),ORDER BY 語句將分別應用於每個子查詢。這確保了組合結果的正確排序,而不會導致錯誤。
以上是UNION查詢中如何正確使用ORDER BY避免錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!