有没有办法将SQL中的EXCEPT语句重写为NOT IN语句?

Kyl*_*yle 1 sql sql-except azure-sql-database

我学习 SQL 已经几周了,刚刚完成了一个关于使用 IN 和 NOT IN 的家庭作业问题。我设法得到了正确的答案,但是,我使用了 EXCEPT 子句,但我们实际上还不允许使用该子句。据我所知,EXCEPT 和 NOT IN 在 SQL 中是非常相似的语句,但我不明白有什么区别。这是我的查询的一般格式:

SELECT *
FROM table
WHERE x IN (
    SELECT x
    /* ... some subquery*/
    EXCEPT
    SELECT x
    /* ... some other subquery*/ 
)
Run Code Online (Sandbox Code Playgroud)

有没有办法重写这个通用查询而不使用 EXCEPT 语句?EXCEPT 和 NOT IN 一般有何不同?

编辑:另一篇文章似乎有一些很好的信息,但它似乎专注于 EXISTS 而不是 IN,它们有不同的目的,不是吗?

Raj*_*Raj 5

这可能会帮助您理解 except 和 NOT IN 之间的区别

EXCEPT运算符返回左侧表中不存在于右侧表中的所有不同行。

另一方面,“NOT IN”将返回左侧表中不存在于右侧表中的所有行,但不会从结果中删除重复行。