Per*_*erd 2 sql sql-server-2008
SELECT DISTINCT NAME
FROM employee MINUS
SELECT NAME FROM salary;
SELECT DISTINCT NAME
FROM employee
WHERE NAME NOT IN (SELECT NAME
FROM salary);
Run Code Online (Sandbox Code Playgroud)
认为结果应该是相同的,但事实并非如此.有人解释为什么不是吗?
MINUS
在MS SQL Server中不是受支持的关键字.如果您查看执行计划,它将解析 MINUS
为表别名employee
- 它相当于:
SELECT DISTINCT [MINUS.]NAME
FROM employee [AS] MINUS
Run Code Online (Sandbox Code Playgroud)
然后将整个查询解析为两个单独的查询:
SELECT DISTINCT [MINUS.]NAME
FROM employee [AS] MINUS
<-- break -->
SELECT NAME FROM salary
Run Code Online (Sandbox Code Playgroud)
其中隐含条款在括号内([]
)
SQL Fiddle似乎没有正确显示多个结果集.
MINUS
SQL Server中Oralcle的等效关键字是EXCEPT
:
SELECT DISTINCT NAME
FROM employee EXCEPT
SELECT NAME FROM salary;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
89 次 |
最近记录: |