SQL での UNION とソート
SQL では、UNION 演算子を使用して、複数の SELECT ステートメントを 1 つの結果セットに結合できます。ただし、各 SELECT ステートメントが異なるデータを返す可能性がある場合、結合されたデータの並べ替えは困難になることがあります。
2 つの基準に基づいて Student テーブルからデータを取得する次のクエリについて考えてみましょう:
<code class="language-sql">SELECT id, name, age FROM Student WHERE age > 20 UNION SELECT id, name, age FROM Student WHERE Name LIKE "%a%";</code>
結合された結果セットを名前列で並べ替えたいと考えています。残念ながら、次のクエリは期待どおりに機能しません:
<code class="language-sql">SELECT id, name, age FROM Student WHERE age > 20 ORDER BY name;</code>
このクエリでは、ORDER BY 句が UNION の完全な結果セットではなく、WHERE 条件の結合結果に適用されます。したがって、データは並べ替えられません。
結合された結果セットを名前で並べ替えるには、単に ORDER BY 句を UNION 演算子の外側に移動します。
<code class="language-sql">SELECT id, name, age FROM Student WHERE age > 20 UNION SELECT id, name, age FROM Student WHERE Name LIKE "%a%" ORDER BY name;</code>
この変更されたクエリでは、ORDER BY 句が完全な結果セットに適用され、結合されたデータが正しく並べ替えられるようになります。
以上がSQL UNION からの結果を適切に並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。