ホームページ >データベース >mysql チュートリアル >IN 句の値の順序に基づいて PostgreSQL の結果を並べ替えるにはどうすればよいですか?

IN 句の値の順序に基づいて PostgreSQL の結果を並べ替えるにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-19 10:51:10494ブラウズ

How Can I Order PostgreSQL Results Based on the Order of Values in an IN Clause?

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

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