什麼是組合查詢
多數SQL查詢都只包含從一個或多個表格傳回資料的單一資料 SELECT 語句。 MySQL也允許執行多個查詢(多條 SELECT 語句),並將結果傳回為單一查詢結果集。這些組合查詢通常稱為並(union)或複合查詢(compound query)。
有兩種基本情況,其中需要使用組合查詢:
#1.在單一查詢中從不同的表返回類似結構的資料;
2.對單一表執行多個查詢,按單一查詢傳回資料。
組合查詢和多個 WHERE 條件 多數情況下,組合相同表格的兩個查詢完成的工作與具有多個 WHERE 子句條件的單一查詢完成的工作相同。換句話說,任何具有多個 WHERE 子句的 SELECT 語句都可以作為一個組合查詢給出,在以下段落中可以看到這一點。這兩種技術在不同的查詢中效能也不同。因此,應該嘗試這兩種技術,以確定對特定的查詢哪一種效能更好。
如何建立組合查詢
可用 UNION 運算子來組合數條SQL查詢。利用 UNION ,可給出多條SELECT 語句,將它們的結果組合成單一結果集。
使用UNION
UNION 的使用很簡單。所需做的只是給每個 SELECT 語句,在各條語句之間放上關鍵字 UNION。
舉一個例子,假如需要價格小於等於 5 的所有物品的一個列表,而且還想包括供應商 1001 和 1002生產的所有物品(不考慮價格)。當然,可以利用 WHERE 子句來完成這項工作,但這次我們將使用 UNION 。
如所述,建立 UNION 涉及編寫多個 SELECT 語句。首先來看單一語句:
輸入:
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 檢索價格不高於5 的所有物品。第二條 SELECT 使用 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);
輸出:
##分析:這條語句由前面的兩個SELECT 語句組成,在語句中用UNION 關鍵字分隔。 UNION 指示MySQL執行兩個 SELECT 語句,並將輸出組合成單一查詢結果集。 作為參考,這裡給出使用多條WHERE 子句而不是使用UNION 的相同查詢:輸入:select vend_id,prod_id,prod_price from products where prod_price <= 5 or vend_id in (1001,1002);在這個簡單的例子中,使用UNION可能比使用WHERE 子句更為複雜。但對於更複雜的過濾條件,或從多個表(而不是單一表)中檢索資料的情形,使用 UNION 可能會使處理更簡單。
以上是mysql 組合查詢:什麼是組合查詢?如何建立組合查詢的詳細內容。更多資訊請關注PHP中文網其他相關文章!