UNION ALL 是否保證結果集中的順序?
在 SQL 中,UNION ALL 運算符合併多個 SELECT 語句的結果。但是,它不保證結果的順序。如果沒有 ORDER BY 子句,行的順序是未定義的且可能會有所不同。
考慮問題中提供的範例:
SELECT 'O' UNION ALL SELECT 'R' UNION ALL SELECT 'D' UNION ALL SELECT 'E' UNION ALL SELECT 'R'
結果可能會以「O-R-D-E-R」的順序顯示,但不保證。順序可能會有所不同,具體取決於資料庫引擎、資料分佈和其他最佳化等因素。
要強制執行特定順序,必須使用 ORDER BY 子句。對於給定的範例,可以將 SortOrder 欄位新增至每個 SELECT 陳述式:
SELECT 'O', 1 SortOrder UNION ALL SELECT 'R', 2 UNION ALL SELECT 'D', 3 UNION ALL SELECT 'E', 4 UNION ALL SELECT 'R', 5 ORDER BY SortOrder
此查詢將以「O-R-D-E-R」順序明確對結果進行排序。請注意,僅當所需順序與預設順序(在本例中未定義)不同時才需要新增 SortOrder 欄位。
以上是`UNION ALL` 是否保留 SQL 結果集中的行順序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!