私はこれをできるだけ効率的に解決しようとしています。
整数のリストを含む単一の列を持つテーブルidsがあるとします。それを「ids」と呼びましょう。
ids
0
1
2
3
4
5
6
そして、いくつかの整数列を持つ別のテーブルitemsがあります。
item1 item2 item3 item4
5 2 2 4
9 2 1 19
0 25 9 2
私がしたいのは、table2 からすべての列を選択することですが、値が「ids」テーブルにない場合は NULL が必要です。したがって、私の結果は次のようになります。
item1 item2 item3 item4
5 2 2 4
NULL 2 1 NULL
0 NULL NULL 2
これを行うには、項目から選択し、各列のIDに結合します。
SELECT CASE WHEN ids1.id IS NOT NULL THEN items.item1 ELSE NULL,
CASE WHEN ids2.id IS NOT NULL THEN items.item2 ELSE NULL,
CASE WHEN ids3.id IS NOT NULL THEN items.item3 ELSE NULL,
CASE WHEN ids4.id IS NOT NULL THEN items.item4 ELSE NULL,
FROM items
LEFT OUTER JOIN ids ids1 ON (ids1.id = items.item1),
LEFT OUTER JOIN ids ids2 ON (ids2.id = items.item2),
LEFT OUTER JOIN ids ids3 ON (ids3.id = items.item3),
LEFT OUTER JOIN ids ids4 ON (ids4.id = items.item4)
残念ながら、これらのテーブルが大きくなる (数百万行) と、同じテーブルに 4 回参加しなければならないのは非常に面倒です。これを行うためのより高速または効率的な方法はありますか?
ありがとう!