MINUS是一个SQL集合操作,它从第一个表中选择元素,然后删除也由Oracle中的第二个SELECT语句返回的行。在SQL Server中,我们可以使用EXCEPT来做同样的事情。
在将我的项目从oracle迁移到SQL Server时,我发现了一个区别。如果第一个结果集没有记录,则minus带来第二个SELECT语句的结果集。但在SQL Server中,EXCEPT不返回任何内容。在那种情况下我该怎么办?我正在迁移我的项目,并希望在SQL Server中执行相同的减函数。
感谢您的帮助
答案 0 :(得分:34)
Oracle MINUS和SQL Server EXCEPT之间没有区别。
他们打算做同样的事情。
答案 1 :(得分:1)
这将从第一个查询中检查任何结果集,然后在有结果的情况下运行except。如果不是,它只运行第二个查询。
IF EXISTS (SELECT NULL
FROM ... <first query criteria>
WHERE ...)
BEGIN
SELECT ... <first query>
EXCEPT
SELECT ... <second query>
END
ELSE
SELECT ... <second query>