[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 メーリングリストの案内