ホームページ >データベース >mysql チュートリアル >SQL UNION からの結果を適切に並べ替えるにはどうすればよいですか?

SQL UNION からの結果を適切に並べ替えるにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-11 06:03:42470ブラウズ

How to Properly Order Results from a SQL UNION?

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。