MySQL 在 where 後面使用 IN 及 NOT IN 語法, 可以搜索跟一系統數值是否匹配, 支援 SELECT, UPDATE 及 DELETE, 而不用逐一用 OR 連接。
MySQL IN
例如要找出 member_id 是 10, 20 及 30 的會員資料, 用 OR 會是這樣:
1 |
SELECT * FROM `members` WHERE `member_id`='10' or `member_id`='20' or `member_id`='30'; |
可以看到上面的 SQL Query 很長, 如果要匹配的項目更多, SQL Query 便會更加長, 如果用 IN 執行, 那便會簡單不少:
1 |
SELECT * FROM `members` WHERE `member_id` IN (10, 20, 30); |
剛剛用 IN 的例子, 與第一個例子會得出相同結果, 但就會簡潔得多。
除了直接在子查詢放入數值外, 也可以將另一個 SELECT 查詢放進去:
1 |
SELECT * FROM users WHERE country IN (SELECT country from worldwide WHERE region = 'Asia'); |
MySQL NOT IN
NOT IN 的意思就是和 IN 相反, 即找出不在列表的資料, 用法跟 IN 相似, 以下是找出 member_id 不是 10, 20 及 30 的資料:
1 |
SELECT * FROM `members` WHERE `member_id` NOT IN (10, 20, 30); |