MySQL の UNION と ORDER BY を使用してソートされた結果をマスターする
MySQL の SELECT
を使用して複数の UNION
ステートメントからのデータを結合することは強力ですが、個々のセクションの並べ替えを維持するのは難しい場合があります。 このガイドでは、UNION
クエリの論理グループを維持しながら、特定の列 ('id' や 'add_date' など) に基づいて各セクション内の結果を並べ替える方法を説明します。
このシナリオには、単一のテーブルからさまざまな基準に基づいてデータを取得し、個別の見出しの下で UNION
を使用して結果を統合することが含まれます。 解決策は次のとおりです:
各 SELECT
ステートメントに「ランキング」列 (疑似列) を導入します。この数値は、各セクション内の表示順序を決定します。
<code class="language-sql">SELECT 1 AS Rank, id, add_date FROM Table UNION ALL SELECT 2 AS Rank, id, add_date FROM Table WHERE distance < ...</code>
次に、この結合クエリをサブクエリ内にカプセル化します。 次に、メイン クエリはこのサブクエリをデータ ソースとして使用し、最初に 'Rank' 列で並べ替え、次に選択した並べ替え基準 ('id' または 'add_date' など) で並べ替えます。
<code class="language-sql">SELECT * FROM ( SELECT 1 AS Rank, id, add_date FROM Table UNION ALL SELECT 2 AS Rank, id, add_date FROM Table WHERE distance < ... ) AS Subquery ORDER BY Rank, id; -- Or ORDER BY Rank, add_date;</code>
このメソッドは、UNION
操作で定義された各セクション内で正確な並べ替えを保証し、クリーンで整理された結果セットを提供します。
以上がMySQL で UNION を使用する場合、各セクション内で結果を並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。