sql中幾個子查詢關(guān)鍵詞any,all,exists,in
in
in表示值是否存在子查詢結(jié)果集中
select * from A where name in(select name from B)
exists
exists是表示子查詢是否返回結(jié)果岔帽,而不管返回的具體內(nèi)容骗绕。
select *from A where exists( select 1 from B where name='liu');
in是“=any的簡寫”;
not in是“<>all”的簡寫
any是表示子查詢結(jié)果中任意一個,all表示子查詢結(jié)果中的所有旬痹。
>any表示只要大于子查詢結(jié)果中的任一個,表達(dá)式就成立豹休,=any表示等于子查詢中的任一個,相當(dāng)于in.
all與any
>all表示要大于子查詢結(jié)果中的所有磷瘤,才會返回true,? not in 相當(dāng)于“<>all”.
當(dāng)ALL、ANY或SOME操作符與"="比較操作符配合使用時茂洒,子查詢可以是一個數(shù)據(jù)表子查詢孟岛。此時,你需要使用一個數(shù)據(jù)行構(gòu)造器來提供與子查詢所返回的數(shù)據(jù)行進(jìn)行比較的比較值督勺。
eg:select *from A where (name,num)=any(select name1,num1 from B where name='john');
in在子查詢不返回數(shù)據(jù)的時候,為false,子查詢結(jié)果中有null的時候渠羞,null不會用于比較。
any 同樣在子查詢不返回數(shù)據(jù)的時候,為false,子查詢結(jié)果中有null的時候智哀,null不會用于比較次询。
all在子查詢不返回數(shù)據(jù)的時候,為true,子查詢結(jié)果中有null的時候,不會返回數(shù)據(jù)瓷叫。
not in 或not exists來代替.
not in 不等于<> any,相當(dāng)于<>all,
<>any是只要不等于其中的任意一個屯吊,就成立