浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

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

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

-- テーブル定義
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 で複数のレコードを引っ張ってこれます。

  • この記事いいね! (0)