IN リスト内の値の順序に基づいて PostgreSQL クエリ結果を並べ替えます
PostgreSQL では、WHERE 句の IN 構造を使用して、列に一致する値のセットを指定できます。ただし、IN リスト内の値の順序に基づいて結果行を並べ替えるのは困難な場合があります。
幸いなことに、PostgreSQL 8.2 では VALUES() 構造が導入されており、これにより特定の値と順序を含む仮想テーブルを作成できるようになります。これにより、IN リスト内の値の順序に基づいて結果を並べ替えることができます。
これを実現するには、次の構文を使用します:
<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>
この例では、VALUES() 構造体を使用して、「x」という名前の仮想テーブルを作成します。この仮想テーブルの各行は、IN リストの値とそれに対応する順序を表します。次に、「id」列に基づいて「comments」テーブルを「x」テーブルと結合し、結果を「ordering」列で並べ替えます。これにより、取得された行が IN リスト (1,3,2,4) で指定された順序で並べられるようになります。
以上がIN リスト内の値の順序に基づいて PostgreSQL クエリ結果を並べ替える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。