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

Waf*_*les 4 sql database relational-algebra

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

dmc*_*lis 6

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

但你可以说:

select id from table1 where id not in (select id from table2)
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 5

有几种方法可以做到这一点.这是一种使用方法NOT EXISTS:

SELECT userid
FROM table1
WHERE NOT EXISTS
(
    SELECT *
    FROM table2
    WHERE table1.userid = table2.userid
)
Run Code Online (Sandbox Code Playgroud)

这是使用连接的另一种方法:

SELECT table1.userid
FROM table1
LEFT JOIN table2
ON table1.userid = table2.userid
WHERE table2.userid IS NULL
Run Code Online (Sandbox Code Playgroud)

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