mysql必知必會 子查詢 組合查詢

2021-08-19 13:32:12 字數 2378 閱讀 4620

一.子查詢:巢狀在其他查詢中的查詢。

二.利用子查詢進行過濾

表orders包含訂單號、客戶id、訂單日期的每個訂單;

表orderitems儲存各個訂單的物品;

表customers儲存客戶資訊。

如:現在我們要檢索出訂購物品tnt2的所有客戶:

1)檢索包含物品tnt2的所有訂單號;

2)根據訂單號檢索出所有客戶的id;

3)根據客戶的id檢索出客戶資訊。

即:select cust_name,cust_contact from customers 

注意:1)子查詢總是從內向外處理的。

2)在where子句中使用子查詢,應該保證select語句具有和where子句相同數目的列(有顏色的地方)。通常,子查詢將返回單個列並且與單個列匹配,當然也可以使用多個列。

二.作為計算字段使用子查詢

如:要求檢索customers表中每個客戶的訂單總數。訂單和相應的客戶id儲存在orders表中。

步驟:1)從customers表中檢索出客戶列表;

2)對於檢索出的每個客戶,統計其在orders表中的訂單數。

即:select cust_name,cust_state,(select count(*) from orders where orders.cust_id=customers.cust_id) as orders from customers order by cust_name;

一、組合查詢:mysql允許執行多個查詢,並將結果作為單個查詢結果返回。

適用情況:1)在單個查詢中從不同的表返回類似的資料;2)對單個表執行多個查詢,按單個查詢返回資料。

使用方式:在每個select之間加上關鍵字union

使用規則:1)union必須由兩條或以上的select語句組成,語句之間用關鍵字union分隔;2)union中的每個查詢必須包含相同的列、表示式或聚集函式(但各個列不需要以相同的次序出現);    3)列資料型別必須相容:型別不必完全相同,但必須是dbms可以隱含地轉換的型別(例如,不同的資料型別或不同的日期).

例:檢索**小於等於5的所有物品的乙個列表,而且還想包括**商1001和1002生產的所有物品(不考慮**).

注意:union預設從查詢的結果集中自動的去除了重複的行;可以使用union all不取消重複的行。

對組合查詢的結果排序:在使用union組合查詢的時候,只能使用一條order by子句,且他必須出現在最後一條select語句之後。如:

MySQL必知必會十七 組合查詢

mysql允許執行多個查詢 多條select語句 並將結果作為單個查詢結果集返回。這些組合查詢通常稱為並 union 或復合查詢 compound query 有兩種基本情況,其中需要使用組合查詢 mysql select vend id,prod id,prod price from produc...

MySQL必知必會 十四 組合查詢

開始線 mysql也允許執行多個查詢,並將結果作為單個查詢結果集返回,這些組合查詢通常稱為並或復合查詢 有兩種基本情況,其中需要使用組合查詢 1.在單個查詢中從不同的表返回類似結構的資料 2.對單個表執行多個查詢,按單個查詢返回資料 可用union操作符來組合數條sql查詢 查詢 小於等於5的所有物...

MySQL必知必會 組合查詢(Union)

php mysql sql 閱讀約 8 分鐘 本篇文章主要介紹使用union操作符將多個select查詢組合成乙個結果集。本文參考 mysql必知必會 工作實踐融合 在大多數開發中,使用一條select查詢就會返回乙個結果集。如果,我們想一次性查詢多條sql語句,並將每一條select查詢的結果合併...