天天看點

MYSQL查詢--子查詢,合并查詢子查詢合并查詢

隻有子查詢傳回的結果列包含一個值時,比較運算符才适用。假如一個子查詢傳回的結果集是值的清單,這時比較運算符就必須用IN運算符代替。 IN運算符可以檢測結果集中是否存在某個特定的值,如果檢測成功就執行外部的查詢。
檢視在infos表中score字段内容符合條件對應的info表資訊 SELECT * from info where score in (SELECT score FROM infos );
MYSQL查詢--子查詢,合并查詢子查詢合并查詢
MYSQL查詢--子查詢,合并查詢子查詢合并查詢

查詢結果:

MYSQL查詢--子查詢,合并查詢子查詢合并查詢
檢視在infos表和info表同名人資訊 SELECT * from info where name in (SELECT name FROM infos );
MYSQL查詢--子查詢,合并查詢子查詢合并查詢
子查詢可以使用比較運算符。這些比較運算符包括=、!=、>、>=、<、<=等。比較運算符在子查詢時使用的非常廣泛。
SELECT * from info where age >= (SELECT age FROM infos where id =4);
MYSQL查詢--子查詢,合并查詢子查詢合并查詢
MYSQL查詢--子查詢,合并查詢子查詢合并查詢
使用EXISTS關鍵字時,内層查詢語句不傳回查詢的記錄。而是傳回一個真假值。如果内層查詢語句查詢到滿足條件的記錄,就傳回一個真值(true),否則,将傳回一個假值(false)。當傳回的值為true時,外層查詢語句将進行查詢;當傳回的為false時,外層查詢語句不進行查詢或者查詢不出任何記錄。
SELECT * from info where exists (SELECT * from infos where id =2);
MYSQL查詢--子查詢,合并查詢子查詢合并查詢
SELECT * from info where exists (SELECT * from infos where id =27);
MYSQL查詢--子查詢,合并查詢子查詢合并查詢
ANY關鍵字表示滿足其中任意一個條件。使用ANY關鍵字時,隻要滿足内層查詢語句傳回的結果中的任意一個,就可以通過該條件來執行外層查詢語句。
SELECT * from info where age > ANY(SELECT age from infos);
MYSQL查詢--子查詢,合并查詢子查詢合并查詢
MYSQL查詢--子查詢,合并查詢子查詢合并查詢
ALL關鍵字表示滿足所有條件。使用ALL關鍵字時,隻有滿足内層查詢語句傳回的所有結果,才可以執行外層查詢語句。
SELECT * from info where age < all(SELECT age from infos);
MYSQL查詢--子查詢,合并查詢子查詢合并查詢
合并查詢結果是将多個SELECT語句的查詢結果合并到一起。合并查詢結果使用UNION和UNION ALL關鍵字。
SELECT score from info UNION SELECT score from infos;
MYSQL查詢--子查詢,合并查詢子查詢合并查詢
SELECT score from info UNION SELECT name from infos;
MYSQL查詢--子查詢,合并查詢子查詢合并查詢