涓嬮潰榪欐鏄妱鐨?br />
Select * from T1 where x in ( select y from T2 )
鎵ц鐨勮繃紼嬬浉褰撲簬:
select *
from t1, ( select distinct y from t2 ) t2
where t1.x = t2.y;
select * from t1 where exists ( select null from t2 where y = x )
鎵ц鐨勮繃紼嬬浉褰撲簬:
for x in ( select * from t1 )
loop
if ( exists ( select null from t2 where y = x.x )
then
OUTPUT THE RECORD
end if
end loop
浠庢垜鐨勮搴︽潵璇達紝in鐨勬柟寮忔瘮杈冪洿瑙傦紝exists鍒欐湁浜涚粫錛岃屼笖in鍙互鐢ㄤ簬鍚勭瀛愭煡璇紝鑰宔xists濂藉儚鍙敤浜庡叧鑱斿瓙鏌ヨ錛堝叾浠栧瓙鏌ヨ褰撶劧涔熷彲浠ョ敤錛屽彲鎯滄病鎰忎箟錛夈?br />
鐢變簬exists鏄敤loop鐨勬柟寮忥紝鎵浠ワ紝寰幆鐨勬鏁板浜巈xists褰卞搷鏈澶э紝鎵浠ワ紝澶栬〃瑕佽褰曟暟灝戯紝鍐呰〃灝辨棤鎵璋撲簡錛岃宨n鐢ㄧ殑鏄痟ash join錛屾墍浠ュ唴琛ㄥ鏋滃皬錛屾暣涓煡璇㈢殑鑼冨洿閮戒細寰堝皬錛屽鏋滃唴琛ㄥ緢澶э紝澶栬〃濡傛灉涔熷緢澶у氨寰堟參浜嗭紝榪欐椂鍊檈xists鎵嶇湡姝g殑浼氬揩榪噄n鐨勬柟寮忋?br />
涓嬮潰榪欐榪樻槸鎶勭殑
not in 鍜宯ot exists
濡傛灉鏌ヨ璇彞浣跨敤浜唍ot in 閭d箞鍐呭琛ㄩ兘榪涜鍏ㄨ〃鎵弿錛屾病鏈夌敤鍒扮儲寮曪紱
鑰宯ot extsts 鐨勫瓙鏌ヨ渚濈劧鑳界敤鍒拌〃涓婄殑绱㈠紩銆?br />
鎵浠ユ棤璁洪偅涓〃澶э紝鐢╪ot exists閮芥瘮not in瑕佸揩銆?/font>
涔熷氨鏄錛宨n鍜宔xists闇瑕佸叿浣撴儏鍐靛叿浣撳垎鏋愶紝not in鍜宯ot exists灝變笉鐢ㄥ垎鏋愪簡錛屽敖閲忕敤not exists灝卞ソ浜嗐?br />

]]>