[pgsql-jp: 34693] where 条件値が配列ケース

it_555_it @ excite.co.jp it_555_it @ excite.co.jp
2005年 1月 20日 (木) 16:53:58 JST


島田です。
恐縮ですが、SQLネタでまた一つ。

SELECT id, type FROM tbl1 WHERE (id, type) IN
 (SELECT id, type FROM tbl2 WHERE name IS NOT NULL)

こんなSQLは良く書くわけですが、
この時、id,type が決まっていて、

id | type
----------
1  | a
2  | b
3  | c
* Primary key(id, type)

の様な時、どんなスマートな書き方があるでしょうか。

SELECT id, type FROM tbl1 WHERE (id, type) = (1, 'a')
                             OR (id, type) = (2, 'b')
                             OR (id, type) = (3, 'c')

これは数が多くなった時、イマイチのような。

id だけな時だったら
SELECT id, type FROM tbl1 WHERE (id) IN (1,2,3)
なんて書くわけですが、2カラム以上の時は
SELECT id, type FROM tbl1 WHERE (id) IN (1,2,3) and (type) IN ('a','b','c')
なんてみなさん書くのでしょうか。
パフォーマンス・コーディング的な観点も含めてご教授頂ければと。
よろしくお願い致します。



pgsql-jp メーリングリストの案内