ホームページ > データベース > mysql チュートリアル > `UNION ALL` は SQL 結果セット内の行の順序を保持しますか?

`UNION ALL` は SQL 結果セット内の行の順序を保持しますか?

Linda Hamilton
リリース: 2024-12-31 00:24:09
オリジナル
266 人が閲覧しました

Does `UNION ALL` Preserve the Order of Rows in SQL Result Sets?

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート