SQL クエリを使用して、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>
このクエリは UNION 操作の結果を並べ替えようとしますが、個々の SELECT ステートメントを囲む括弧の外側に ORDER BY 句を使用することはできないため、例外がスローされます。
UNION クエリを正しく順序付けするには、すべての SELECT ステートメントに 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>
このアプローチでは、UNION ALL を使用して結合される前に、個々のデータセットが括弧内で並べ替えられます。結合された結果は、最も外側の SELECT ステートメントの ORDER BY 句の要件に従って順序付けされます。
以上がSQL UNION クエリの結果を適切に並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。