Man*_*hra 2 sql oracle oracle11g
select deptno
from emp2
MINUS
select deptno
from dpt
order by deptno;
Run Code Online (Sandbox Code Playgroud)
上面的查询返回=没有找到数据
然而,
select deptno,ename
from emp2
MINUS
select deptno,dname
from dpt
order by deptno;
Run Code Online (Sandbox Code Playgroud)
返回所有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
Run Code Online (Sandbox Code Playgroud)
在第一个查询中deptno,表之间没有任何不同,在第二个查询中,您具有相同deptno的名称,但名称不同
想想这样:
查询1:
select deptno
from emp2
MINUS
select deptno
from dpt
order by deptno;
Run Code Online (Sandbox Code Playgroud)
例:
[1,2,3,4] - [1,2,3,4] = empty
Run Code Online (Sandbox Code Playgroud)
查询2:
select deptno,ename
from emp2
MINUS
select dept no,dname
from dpt
order by deptno;
Run Code Online (Sandbox Code Playgroud)
例:
[(1, 'a'),(2, 'b'),(3, 'c'),(4, 'd')] -
[(1, 'z'),(2, 'x'),(3, 'u'),(4, 'w')] =
[(1, 'a'),(2, 'b'),(3, 'c'),(4, 'd')]
Run Code Online (Sandbox Code Playgroud)
MINUS运算符,它只返回第一个查询返回的唯一行,但不返回第二个查询返回的唯一行