我有一个 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 在表中不存在。
附注ID 列表是一个逗号分隔的字符串,我期待使用单个查询来完成此操作。
预先感谢您的帮助。
最佳答案
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)
关于mysql - 搜索某一列中的 ID 列表并选择不存在的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50179232/