减去与ORACLE / SQL Server中的区别

时间:2011-04-05 20:20:09

标签: sql-server oracle tsql plsql

MINUS是一个SQL集合操作,它从第一个表中选择元素,然后删除也由Oracle中的第二个SELECT语句返回的行。在SQL Server中,我们可以使用EXCEPT来做同样的事情。

在将我的项目从oracle迁移到SQL Server时,我发现了一个区别。如果第一个结果集没有记录,则minus带来第二个SELECT语句的结果集。但在SQL Server中,EXCEPT不返回任何内容。在那种情况下我该怎么办?我正在迁移我的项目,并希望在SQL Server中执行相同的减函数。

感谢您的帮助

2 个答案:

答案 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>