配列型を使用した PostgreSQL JOIN での順序の保持: 包括的なソリューション
指定されたデータベース スキーマは、items と some_chosen_data_in_order という 2 つのテーブルで構成されます。ここでのタスクは、配列型フィールドの要素の順序を維持しながら、some_chosen_data_in_order テーブルの特定の行のデータを items テーブルから取得することです。
無効な試行:
JOIN とサブクエリを使用した最初の試みでは、配列型フィールド内の要素の順序を維持できませんでした。これらのアプローチでは、要素が id_items 配列に表示される順序が一貫して保持されません。
効果的な解決策:
この問題を解決するには、ネスト解除() function:
SELECT t.* FROM unnest(ARRAY[1,2,3,2,3,5]) item_id LEFT JOIN items t on t.id=item_id
説明:
このクエリは、unnest() 関数を利用して item_id 配列から個々の要素を抽出し、要素ごとに一時的な行を効果的に作成します。次に、items テーブルと LEFT JOIN を実行して、指定された順序を維持しながら目的のデータを取得します。
例:
次の行を含む some_chosen_data_in_order テーブルを考えてみましょう。 id_items は [1,2,3,2,3,5] です。前述のクエリを実行すると、次のアイテムに関連するデータが (指定された順序で) 返されます:
このソリューションにより、項目テーブルから取得されたデータが、some_chosen_data_in_order テーブルの配列型フィールドの要素の順序と一致することが保証されます。
以上がPostgreSQL でテーブルを結合するときに配列の順序を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。