IN 函數可替代多個 OR 條件,語法簡潔、可讀性高,適用於 SELECT、INSERT、UPDATE、DELETE 等所有合法 SQL 陳述式。
SELECT columns
FROM tables
WHERE column1 IN (value1, value2, ..., value_n);
SELECT *
FROM supplier
WHERE supplier_name IN ('IBM', 'Hewlett Packard', 'Microsoft');
SELECT *
FROM orders
WHERE customer_id IN (SELECT id FROM customers WHERE country = 'USA');
SELECT *
FROM products
WHERE category_id NOT IN (10, 20, 30);
IN 通常最佳化為多個 ORJOIN 臨時表或表值參數NOT IN 遇 NULL 值會導致整個判斷為 UNKNOWN,建議改用 NOT EXISTS| 場景 | 建議 |
|---|---|
| 靜態值列表 | IN 更簡潔 |
| 子查詢回傳大量資料 | EXISTS 通常更快 |
| 子查詢含 NULL | 避免 NOT IN,用 NOT EXISTS |