SQLのIN句で複数カラムの組み合わせを指定する

·1 分で読めます

SQLのIN句では、次のように複数カラムをまとめて指定できることを最近知った。

SELECT *
FROM your_table
WHERE (column1, column2) IN (
  ('value1', 'value2'),
  ('value3', 'value4')
);

これは以下のSQLと同じ意味である。

SELECT *
FROM your_table
WHERE
  (column1 = 'value1' AND column2 = 'value2')
  OR
  (column1 = 'value3' AND column2 = 'value4');

つまり、同じ行にあるcolumn1column2が、次のどちらかの組み合わせと一致する行を取得する、という意味になる。

  • column1 = 'value1'かつcolumn2 = 'value2'
  • column1 = 'value3'かつcolumn2 = 'value4'