ホームページ >データベース >mysql チュートリアル >IN 句の値の順序に基づいて PostgreSQL の結果を並べ替えるにはどうすればよいですか?
IN 句を使用した PostgreSQL クエリの行順序の制御
PostgreSQL の IN
句はフィルタリングには強力ですが、本質的に特定の行順序を保証するものではありません。 IN
リスト内のシーケンスに従って順序付けされた行を取得する必要がある場合は、VALUES
コンストラクト (PostgreSQL 8.2 以降で利用可能) を使用した回避策が解決策となります。
このアプローチでは、IN
リストの ID をカスタム注文にマップするサブクエリを作成します。次に、メイン クエリはこのサブクエリを結合して、結果を並べ替えます。 その方法は次のとおりです:
<code class="language-sql">SELECT c.* FROM comments c JOIN ( VALUES (1,1), (3,2), (2,3), (4,4) ) AS x (id, ordering) ON c.id = x.id ORDER BY x.ordering;</code>
このクエリは、x
を使用して一時テーブル (VALUES
) を構築します。 x
の各行は、IN
リストの ID と希望の順序 (ordering
) を組み合わせます。 JOIN
操作は、comments
列に基づいて、この一時テーブルを id
テーブルにリンクします。 最後に、ORDER BY x.ordering
は、VALUES
構造で定義された順序に従って結果を並べ替えます。
このメソッドを使用すると、IN
句を含むクエリによって返される行の順序を効果的にカスタマイズでき、データの表示を正確に制御できます。
以上がIN 句の値の順序に基づいて PostgreSQL の結果を並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。