介紹如何在 MySQL/MariaDB 資料庫中使用 IN
條件查詢指定清單的資料。
IN
清單條件
MySQL/MariaDB 資料庫的 IN
條件可以根據清單項目,列出所有符合的資料。
假設我們有一張 persons
資料表,內容如下:
-- 查看資料表內容 SELECT * FROM persons;
+----+-------+------+---------+ | id | name | age | city | +----+-------+------+---------+ | 1 | Arden | 32 | Taipei | | 2 | Bond | 54 | Taipei | | 3 | Cole | 12 | Hsinchu | | 4 | Dana | 19 | Hsinchu | | 19 | Jack | 33 | Taipei | +----+-------+------+---------+
假設我們想要查詢 id
為 2
、3
、4
的人員資料,就可以執行:
-- 查詢指定清單資料 SELECT * FROM persons WHERE id IN (2, 3, 4);
+----+------+------+---------+ | id | name | age | city | +----+------+------+---------+ | 2 | Bond | 54 | Taipei | | 3 | Cole | 12 | Hsinchu | | 4 | Dana | 19 | Hsinchu | +----+------+------+---------+
上面這個 IN
條件的作用就等同於以下這個 OR
語法,只不過用 IN
會簡單很多。
-- 相同作用的 OR 語法 SELECT * FROM persons WHERE id = 2 OR id = 3 OR id = 4;
除了指定 id
之外,也可以直接指定人名清單,將指定的人員資料列出:
-- 查詢指定清單資料 SELECT * FROM persons WHERE name IN ('Arden', 'Cole', 'Jack');
+----+-------+------+---------+ | id | name | age | city | +----+-------+------+---------+ | 1 | Arden | 32 | Taipei | | 3 | Cole | 12 | Hsinchu | | 19 | Jack | 33 | Taipei | +----+-------+------+---------+
NOT IN
排除清單條件
若要排除指定的人員,可用 NOT IN
指定排除清單:
-- 排除指定清單資料 SELECT * FROM persons WHERE id NOT IN (2, 3, 19);
+----+-------+------+---------+ | id | name | age | city | +----+-------+------+---------+ | 1 | Arden | 32 | Taipei | | 4 | Dana | 19 | Hsinchu | +----+-------+------+---------+