繁体   English   中英

在SQL中,如何执行“减法”操作?

[英]In SQL, how can I perform a “subtraction” operation?

假设我有两个表,它们都有用户ID。 我想执行一个操作,它将返回表1中不在表2中的所有用户IDS。我知道必须有一些简单的方法来执行此操作 - 任何人都可以提供一些帮助吗?

它很慢,但你通常可以用'不在'之类的东西来完成它。 (各种RDBMS系统中还有其他功能以更好的方式执行此操作,例如,Oracle具有可用于此的“exists”子句。

但你可以说:

select id from table1 where id not in (select id from table2)

有几种方法可以做到这一点。 这是使用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

最快的方法取决于数据库。

一种方法是使用EXCEPT,如果您的TSQL方言支持它。 它相当于执行左连接和空测试

SELECT user_id FROM table1 LEFT JOIN table2 ON table1.user_id = table2.user_id WHERE table2.user_id IS NULL;

如果是SQL Server:

SELECT id FROM table1
EXCEPT 
SELECT id FROM table2

甲骨文:

SELECT id FROM table1
MINUS
SELECT id FROM table2

休息:我不确定......

尝试这个:

SELECT id FROM table1 WHERE id NOT IN
(
    SELECT id FROM table2
)
select ID from table1
where ID not in (select ID from table2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM