我相信以下查询是等效的,并且应该产生相同的结果:
select CITY from TBL_X
where CITY not in (
select CITY from TBL_X
where CITY in (
select CITY
from TBL_Y
)
)
select CITY
from TBL_X
where CITY not in (
select CITY
from TBL_Y
);
但是第一个查询产生10行数据,第二个查询产生0行数据。有什么合理的解释吗?
答案 0 :(得分:4)
请勿将$ wget -c --content-disposition "https://javadl.oracle.com/webapps/download/AutoDL?BundleId=239835_230deb18db3e4014bb8e3e8324f81b43"
$ old=$(ls -hat | grep jre | head -n1)
$ mv $old $(echo $old | awk -F"?" '{print $1}')
与子查询一起使用。当子查询返回的任何值为not in
时,它不返回任何行。
相反,请使用NULL
:
not exists
您的查询并不相同,就如同它们并非相反:
select x.CITY
from TBL_X x
where not exists (select 1
from tbl_y y
where y.CITY = x.CITY
);
这两个子句都过滤掉where x = y
where not (x = y)
个值。