我有一个ID列表1,2,3,4,5,6,7,8,9
和一个MySQL表格如下;
mysql> describe tbl;
+-------+-----------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------------+------+-----+---------+-------+
| id | int(5) unsigned | NO | | 0 | |
+-------+-----------------+------+-----+---------+-------+
1 row in set (0.01 sec)
mysql> select * from tbl;
+----+
| id |
+----+
| 1 |
| 4 |
| 8 |
+----+
2 rows in set (0.00 sec)
我想要做的是从列表中找到表中不存在的ID。
我尝试过使用IN
和NOT IN
条款的不同方法,但无法获得所需的结果。
使用上面的示例,我需要将结果设为2,3,5,6,7,9
,因为这些ID并不存在于表格中。
P.S。 ID列表是一个逗号分隔的字符串,我期待使用单个查询来完成它。
提前感谢您的帮助。
答案 0 :(得分:0)
SELECT * FROM ints;
+---+
| i |
+---+
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
+---+
10 rows in set (1.65 sec)
SELECT a.*
FROM
(SELECT 8 i UNION
SELECT 9 UNION
SELECT 10 UNION
SELECT 11 UNION
SELECT 12) a
LEFT
JOIN ints b
ON b.i = a.i
WHERE b.i IS NULL;
+----+
| i |
+----+
| 10 |
| 11 |
| 12 |
+----+
3 rows in set (0.06 sec)