SELECT DISTINCT NAME
FROM employee MINUS
SELECT NAME FROM salary;
SELECT DISTINCT NAME
FROM employee
WHERE NAME NOT IN (SELECT NAME
FROM salary);
认为结果应该是相同的,但事实并非如此。有人解释为什么不是吗?
答案 0 :(得分:5)
MINUS
在MS SQL Server中不是受支持的关键字。如果您查看执行计划,它会将MINUS
解析为employee
的表别名 - 它相当于:
SELECT DISTINCT [MINUS.]NAME
FROM employee [AS] MINUS
然后将整个查询解析为两个单独的查询:
SELECT DISTINCT [MINUS.]NAME
FROM employee [AS] MINUS
<-- break -->
SELECT NAME FROM salary
隐含条款在括号内([]
)
SQL Fiddle似乎没有正确显示多个结果集。
SQL Server中Oralcle&#39; s MINUS
的等效关键字为EXCEPT
:
SELECT DISTINCT NAME
FROM employee EXCEPT
SELECT NAME FROM salary;