MySQL-17組合查詢-必知必會
阿新 • • 發佈:2021-01-02
利用UNION操作符將多條SELECT語句組合成一個結果集。一般SQL查詢只包含從一個/多個表中返回的單條SELECT語句,MySQL允許多個查詢並將結果作為單個查詢結果集返回
-
什麼時候使用組合查詢?
- 1、在單個查詢中從不同的表返回類似結構的資料
- 2、在單個表執行多個查詢,按單個查詢返回資料
- 具有多個WHERE子句的SELECT語句都可以作為一個組合查詢給出
-
使用UNION操作符來組合多條SQL查詢
#需要價格<=5的所有物品的一個列表,還想要包括供應商1001和1002生產的所有物品(不考慮價格) SELECT vend_id,prod_id,prod_price FROM products WHERE prod_price <= 5; SELECT vend_id,prod_id,prod_price FROM products WHERE vend_id IN (1001,1002); #使用組合查詢,就能把結果合併到一起 SELECT vend_id,prod_id,prod_price FROM products WHERE prod_price <= 5 UNION SELECT vend_id,prod_id,prod_price FROM products WHERE vend_id IN (1001,1002); #也可以使用多個WHERE子句執行相同的查詢 SELECT vend_id,prod_id,prod_price FROM products WHERE prod_price <= 5 OR vend_id IN (1001,1002);
- UNION必須由兩條以上的SELECT語句組成,語句之間用NUNION分隔
- 每個SELECT查詢必須包含相同的列、表示式或聚集函式,不需要順序一致
- 列的資料型別必須相容,不完全相同時用DBMS轉型
-
包含或取消重複的行
UNION從結果集中自動去除重複的行,想返回所有的用UNION ALL關鍵字就不會去重
-
對查詢結果排序
在最後一條SELECT語句後接一條ORDER BY子句,不允許多條ORDER BY子句