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>
ORDER BY ステートメントは、サブクエリをかっこで囲み、エイリアス (DUMMY_ALIAS1 および DUMMY_ALIAS2) を割り当てることで、各サブクエリに個別に適用されます。これにより、エラーが発生することなく、結合された結果が正しい順序で並べられるようになります。
以上がエラーを避けるために UNION クエリで ORDER BY を正しく使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。