找出哪些值不在表中

时间:2014-12-31 16:13:29

标签: mysql sql

简单的问题,但我画了一个空白。任何帮助表示赞赏。

我有一张ids表:

-------    
| ids |    
-------    
|  1  |    
|  5  |
|  7  |
-------

除了实际表格长达数千个条目。

我有一个列表(x),而不是表格,其他ID,比如说2,6,7。我需要查看来自x的哪些ID不在ids中} table。

我需要回来(2,6)

我试过这样的事情:

SELECT id FROM ids WHERE id IN (2,6,7) GROUP BY id HAVING COUNT(*) = 0;

但是,COUNT(*)仅返回检索到的行数,它不会返回0.

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

尝试使用“NOT IN”子句:

select * from 
(SELECT 2 as id
UNION ALL
SELECT 6 as id
UNION ALL
SELECT 7 as id) mytable
WHERE ID not in (SELECT id FROM ids)

请参阅小提琴here

答案 1 :(得分:2)

创建一个临时表,在其中插入所需的ID,然后运行连接,如下所示:

CREATE TEMPORARY TABLE temp_wanted (id BIGINT);
INSERT INTO temp_wanted(id) VALUES (2),(6),(7);
SELECT id
FROM temp_wanted t
LEFT OUTER JOIN ids i ON i.id=t.id
WHERE i.id IS NULL