假设我有两个表,它们都有用户 ID。我想执行一个操作,返回表 1 中所有不在表 2 中的用户 ID。我知道必须有一些简单的方法来做到这一点 - 任何人都可以提供一些帮助吗?
问问题
4106 次
7 回答
6
它很慢,但是您通常可以使用“不在”之类的东西来完成此操作。(各种 RDBMS 系统中还有其他功能可以以更好的方式执行此操作,例如 Oracle 有一个“exists”子句可用于此目的。
但你可以说:
select id from table1 where id not in (select id from table2)
于 2011-01-31T23:56:51.687 回答
5
有几种方法可以做到这一点。这是使用的一种方法NOT EXISTS
:
SELECT userid
FROM table1
WHERE NOT EXISTS
(
SELECT *
FROM table2
WHERE table1.userid = table2.userid
)
这是使用连接的另一种方法:
SELECT table1.userid
FROM table1
LEFT JOIN table2
ON table1.userid = table2.userid
WHERE table2.userid IS NULL
最快的方法取决于数据库。
于 2011-01-31T23:57:05.963 回答
1
一种方法是使用EXCEPT,如果您的 TSQL 方言支持它。相当于执行左连接和空测试
于 2011-01-31T23:58:06.703 回答
1
SELECT user_id FROM table1 LEFT JOIN table2 ON table1.user_id = table2.user_id WHERE table2.user_id IS NULL;
于 2011-01-31T23:58:57.293 回答
1
如果是 SQL Server:
SELECT id FROM table1
EXCEPT
SELECT id FROM table2
甲骨文:
SELECT id FROM table1
MINUS
SELECT id FROM table2
休息:不确定....
于 2011-02-01T00:00:02.333 回答
0
试试这个:
SELECT id FROM table1 WHERE id NOT IN
(
SELECT id FROM table2
)
于 2011-01-31T23:57:04.380 回答
0
select ID from table1
where ID not in (select ID from table2)
于 2011-01-31T23:57:07.053 回答