ホームページ >データベース >mysql チュートリアル >ランク列を使用して UNION から結合された MySQL クエリ結果をソートするにはどうすればよいですか?
MySQL クエリで UNION と ORDER BY を組み合わせて使用し、ソートされた結果のグループ化を実現します
MySQL では、UNION 演算子を使用して複数のクエリを結合し、結果をマージできます。このようなクエリを処理する場合、結合された結果を特定の方法で並べ替えると有益な場合があります。
ある場所からの距離に基づいて、単一のテーブルからさまざまなタイプのレコードを抽出するとします。次の 3 つのクエリがあるとします:
<code class="language-sql">SELECT id, add_date FROM Table WHERE distance = 0; SELECT id, add_date FROM Table WHERE distance < 5; SELECT id, add_date FROM Table WHERE distance BETWEEN 5 AND 15;</code>
UNION を使用してこれらのクエリを結合した後、「正確な結果」、「5 キロメートル以内の結果」などの各見出しで結果を並べ替えることができます。
これを行うには、各 SELECT ステートメントに「Rank」と呼ばれる疑似列を使用します。この列には、特定のグループ内の各レコードのランクが含まれるため、他の並べ替え基準を適用する前にそれによって並べ替えることができます。
これを実現する方法の例を次に示します:
<code class="language-sql">SELECT * FROM ( SELECT 1 AS Rank, id, add_date FROM Table WHERE distance = 0 UNION ALL SELECT 2 AS Rank, id, add_date FROM Table WHERE distance < 5 UNION ALL SELECT 3 AS Rank, id, add_date FROM Table WHERE distance BETWEEN 5 AND 15 ) AS combined_results ORDER BY Rank, id, add_date;</code>
このクエリでは、結果はまず「ランク」列によって並べ替えられ、検索タイプ (完全、5 km 以内、または 5 ~ 15 km 以内) に基づいてレコードがグループ化されます。各グループ内で、レコードは「id」と「add_date」によって並べ替えられます。
以上がランク列を使用して UNION から結合された MySQL クエリ結果をソートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。