以下兩個查詢是否總是給出相同的結果?如果不是,爲什麼不呢?SQL查詢 - 存在與否的區別
1)
select PayFrequencyTypeID, PayFrequencyDesc
from db_uspaybo.tblpayfrequency
where (PayFrequencyTypeID,1) not in (
select payfrequencytype,1
from tblcustomerpayapproval
where fedtaxid='903008887' and payrollyear=year(curdate())
);
2)
select payfrequencytypeid
from tblpayfrequency
where not exists (
select distinct payfrequencytype
from tblcustomerpayapproval
);
預先感謝。
你有沒有試過運行它來看看自己? – 2011-02-16 12:14:01
他們爲什麼會這樣?第一個有一個WHERE條件,它不會在第二個任何地方出現,也可以選擇一個額外的列。 – 2011-02-16 12:14:41
@Sachin - 這個愚蠢是關於性能的,這是關於語義的。鏈接問題中的答案沒有提及具有NULL的`NOT IN`將返回一個空的結果集。 – 2011-02-16 12:20:17