ホームページ >データベース >mysql チュートリアル >ランク列を使用して UNION から結合された MySQL クエリ結果をソートするにはどうすればよいですか?

ランク列を使用して UNION から結合された MySQL クエリ結果をソートするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-11 11:47:43668ブラウズ

How Can I Sort Combined MySQL Query Results from UNION Using a Rank Column?

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

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