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 中国語 Web サイトの他の関連記事を参照してください。