最近一直在練習MYSQL的多表查詢,基本上每個查詢語句我都會寫至少兩次:一次join連接尸闸,一次子查詢画舌。來對比一下MYSQL在不同的查詢方式下的工作方式和效率。在子查詢有any介褥、all座掘、some這些關(guān)鍵詞递惋。
? ? any,all關(guān)鍵字必須與一個比較操作符一起使用。any關(guān)鍵詞可以理解為“對于子查詢返回的列中的任一數(shù)值溢陪,如果比較結(jié)果為true萍虽,則返回true”。all的意思是“對于子查詢返回的列中的所有值形真,如果比較結(jié)果為true杉编,則返回true”
? ?any 可以與=、>没酣、>=王财、<、<=裕便、<>結(jié)合起來使用绒净,分別表示等于、大于偿衰、大于等于挂疆、小于、小于等于下翎、不等于其中的任何一個數(shù)據(jù)缤言。
? ?all可以與=、>视事、>=胆萧、<、<=俐东、<>結(jié)合是來使用跌穗,分別表示等于、大于虏辫、大于等于蚌吸、小于、小于等于砌庄、不等于其中的其中的所有數(shù)據(jù)羹唠。
舉個例子:
select s1 from t1 where s1 > any (select s1 from t2);
假設any后面的s1返回了三個值,那其實就等價于
select? s1 from t1 where s1 > result1 or s1 > result2 or s2 > result3
而all的用法相當于把上述語句的‘or’緩沖‘a(chǎn)nd’
說道這你可能已經(jīng)知道了any和or常用于兩表的對比娄昆,當你不知道where后面具體值是可以用any佩微,all幫你判定。