IN 演算子
参考:
SQLite3
参考:
指定した値のリストと比較 (IN 句) | SQLite 入門 (www.dbonline.jp)
Determine a Value Matches Any Value In A List | SQLite Tutorial (sqlitetutorial.net)
expression | SQLite Query Language (sqlite.org)
SELECT | SQLite Query Language (sqlite.org)
MySQL / MariaDB
参考:
expr IN (value,…) | MySQL 5.6 リファレンスマニュアル [公式]
expr IN (value,…) | MySQL 8.0 Reference Manual [Official]
IN | MariaDB Knowledge Base [Official]
PostgreSQL
参考:
SQL の IN 句で複数の条件を指定する | しょぼんメモリ
行と配列の比較 | PostgreSQL 11.3 文書 (postgresql.jp)
IN – 副問い合わせ式 | PostgreSQL 11.3 文書 (postgresql.jp)
NOT IN – 副問い合わせ式 | PostgreSQL 11.3 文書 (postgresql.jp)
値の組み合わせに対して使う
SELECT * FROM table WHERE (col1, col2) IN ((1, 2), (3, 4), (5, 6))
VALUES
を使う。
SELECT * FROM table WHERE (col1, col2) IN ( VALUES (1, 2), (3, 4), (5, 6) )
参考:
SQL の IN 句で複数の条件を指定する | しょぼんメモリ
‘In’ clause in SQL server with multiple columns – Stack Overflow
selecting where two columns are in a set – Database Administrators Stack Exchange
How can I rewrite a multi-column IN clause to work on SQLite? – Stack Overflow
サブクエリで抽出した複数カラムに対して使う
サブクエリで他のテーブルに存在するカラムの組み合わせを使う。
SELECT * FROM table1 WHERE (col1, col2) IN (SELECT col1, col2 FROM table2)
EXISTS
を使って書き換える。
SELECT * FROM table1 WHERE EXISTS ( SELECT * FROM table2 WHERE table1.col1 = table2.col1 AND table1.col2 = table2.col2 )
INNER JOIN
を使う。
SELECT table1.* FROM table1 INNER JOIN ( SELECT DISTINCT col1, col2 FROM table2 ) AS table2_sub ON table1.col1 = table2_sub.col1 AND table1.col2 = table2_sub.col2
参考:
WHERE.. IN clause multiple columns – Stack Overflow
ROW
参考:
行コンストラクタ | PostgreSQL 11.3 文書 (postgresql.jp)
Row Constructors | PostgreSQL Documentation [Official]
VALUES
参考:
Table Value Constructors | MariaDB Knowledge Base [Official]
VALUES | PostgreSQL 11.3 文書 (postgresql.jp)
VALUES | PostgreSQL Documentation [Official]
SELECT DISTINCT
参考: