select deptno
from emp2
MINUS
select deptno
from dpt
order by deptno;
以上查询返回=未找到数据
然而,
select deptno,ename
from emp2
MINUS
select deptno,dname
from dpt
order by deptno;
返回所有deptno和ename字段值。
你能解释为什么我在第二个查询中使用MINUS运算符时得到了deptno字段的所有值吗?
legend:
emp is employee table and dpt is department table,
ename is employee name -belonging to emp,
dname is department name -belonging to dpt,
deptno is department no. -common to both
答案 0 :(得分:6)
在第一个查询中,表之间没有不同的deptno
,在第二个查询中,您有相同的deptno
,但名称不同
这样想:
查询1:
select deptno
from emp2
MINUS
select deptno
from dpt
order by deptno;
示例:
[1,2,3,4] - [1,2,3,4] = empty
查询2:
select deptno,ename
from emp2
MINUS
select dept no,dname
from dpt
order by deptno;
示例:
[(1, 'a'),(2, 'b'),(3, 'c'),(4, 'd')] -
[(1, 'z'),(2, 'x'),(3, 'u'),(4, 'w')] =
[(1, 'a'),(2, 'b'),(3, 'c'),(4, 'd')]
MINUS 运算符,它只返回第一个返回的唯一行 查询但不是第二次