WHERE 子句支援多條件組合,核心操作符為 AND(且)、OR(或)、IN(集合)、NOT(非)。理解運算符優先級(AND 高於 OR)與括號分組是寫出正確查詢的關鍵。以下以 products 表演示。

同時滿足廠商 ID 為 1003 且 價格 ≤ 10:
SELECT * FROM products WHERE vend_id = 1003 AND prod_price <= 10;
三條件並列同理:WHERE vend_id = 1003 AND prod_price <= 10 AND prod_name LIKE 'Jet%'

廠商為 1002 或 1003:
SELECT * FROM products WHERE vend_id = 1002 OR vend_id = 1003;

需求:廠商為 1002 或 1003,且 價格 > 10。
錯寫(AND 優先級高,實際成:vend_id=1002 或 (vend_id=1003 且 price>10)):
SELECT * FROM products WHERE vend_id = 1002 OR vend_id = 1003 AND prod_price > 10;

正確寫法(用括號明確分組):
SELECT * FROM products WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price > 10;

WHERE vend_id IN (1002, 1003) 等價於 vend_id = 1002 OR vend_id = 1003,語義更清晰,值列表長時更易維護。
SELECT * FROM products WHERE vend_id IN (1002, 1003);

排除特定廠商:WHERE vend_id NOT IN (1002, 1003) 或 WHERE NOT (vend_id = 1002 OR vend_id = 1003)。

AND/OR 務必加括號,避免優先級導致邏輯錯誤。IN,可讀性強且優化器易轉換為範圍查詢。NOT IN 子查詢若包含 NULL 會導致結果為空,改用 NOT EXISTS 或 LEFT JOIN ... IS NULL。