首頁  >  文章  >  資料庫  >  mysql 組合查詢:什麼是組合查詢?如何建立組合查詢

mysql 組合查詢:什麼是組合查詢?如何建立組合查詢

巴扎黑
巴扎黑原創
2018-05-14 14:49:4311592瀏覽

什麼是組合查詢

多數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;

#輸出:

mysql 組合查詢:什麼是組合查詢?如何建立組合查詢

#輸入:

select vend_id,prod_id,prod_price from products where vend_id in (1001,1002);

輸出:

mysql 組合查詢:什麼是組合查詢?如何建立組合查詢

分析:第一個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);

輸出:

mysql 組合查詢:什麼是組合查詢?如何建立組合查詢

##分析:這條語句由前面的兩個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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn