mysql 組合查詢:什么是組合查詢?如何創建組合查詢
發表時間:2023-08-31 來源:明輝站整理相關軟件相關文章人氣:
[摘要]什么是組合查詢多數SQL查詢都只包含從一個或多個表中返回數據的單條 SELECT 語句。MySQL也允許執行多個查詢(多條 SELECT 語句),并將結果作為單個查詢結果集返回。這些組合查詢通常稱為并(union)或復合查詢(compound query)。有兩種基本情況,其中需要使用組合查詢:1...
什么是組合查詢多數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中文網其它相關文章!
學習教程快速掌握從入門到精通的SQL知識。