【MySQL】WHERE IN で複数カラム単位でまとまった値セット複数を使って絞り込む

  • 2021年12月24日
  • SQL

 題ではピンとこない感じですが、挙動を見れば一発です。例は次です。

-- テーブル定義
create table Test(id_a integer, id_b varchar(100));
insert into Test(id_a, id_b) values(1, "Hello");
insert into Test(id_a, id_b) values(1, "Good Night");
insert into Test(id_a, id_b) values(2, "Good Morning");
-- 複数カラム単位で絞り込み
select * from Test where (id_a, id_b) in (
    (1, "Hello"),
    (2, "Good Morning")
);
-- 結果
-- id_a	id_b
-- 1	Hello
-- 2	Good Morning

 WHERE IN では例の様に括弧を使って複数カラムをまとめて絞り込むクエリを作れます。例を試したのは MySQL と PostgreSQL ですが、パッとググった感じ SQL 標準でありほとんどの SQL を使うデータベースで使用できそうです。ただ SQLServer についてはできないという話もあったので SQLServer については怪しいです(古い記事なので改善されている可能性も十分あります)。
MySQL :: MySQL 8.0 リファレンスマニュアル :: 12.4.2 比較関数と演算子#operator_in
 例の様に複数カラムでまとめて WHERE IN をすることによって複合主キーを持つテーブル相手でも一発のシンプルな SQL で複数のレコードを引っ張ってこれます。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG