mysql 組合查詢:什么是組合查詢?如何創(chuàng)建組合查詢
發(fā)表時(shí)間:2023-08-31 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]什么是組合查詢多數(shù)SQL查詢都只包含從一個(gè)或多個(gè)表中返回?cái)?shù)據(jù)的單條 SELECT 語句。MySQL也允許執(zhí)行多個(gè)查詢(多條 SELECT 語句),并將結(jié)果作為單個(gè)查詢結(jié)果集返回。這些組合查詢通常稱為并(union)或復(fù)合查詢(compound query)。有兩種基本情況,其中需要使用組合查詢:1...
什么是組合查詢多數(shù)SQL查詢都只包含從一個(gè)或多個(gè)表中返回?cái)?shù)據(jù)的單條 SELECT 語句。MySQL也允許執(zhí)行多個(gè)查詢(多條 SELECT 語句),并將結(jié)果作為單個(gè)查詢結(jié)果集返回。這些組合查詢通常稱為并(union)或復(fù)合查詢(compound query)。
有兩種基本情況,其中需要使用組合查詢:
1.在單個(gè)查詢中從不同的表返回類似結(jié)構(gòu)的數(shù)據(jù);
2.對單個(gè)表執(zhí)行多個(gè)查詢,按單個(gè)查詢返回?cái)?shù)據(jù)。
組合查詢和多個(gè) WHERE 條件 多數(shù)情況下,組合相同表的兩個(gè)查詢完成的工作與具有多個(gè) WHERE 子句條件的單條查詢完成的工作相同。換句話說,任何具有多個(gè) WHERE 子句的 SELECT 語句都可以作為一個(gè)組合查詢給出,在以下段落中可以看到這一點(diǎn)。這兩種技術(shù)在不同的查詢中性能也不同。因此,應(yīng)該試一下這兩種技術(shù),以確定對特定的查詢哪一種性能更好。
如何創(chuàng)建組合查詢
可用 UNION 操作符來組合數(shù)條SQL查詢。利用 UNION ,可給出多條SELECT 語句,將它們的結(jié)果組合成單個(gè)結(jié)果集。
使用UNION
UNION 的使用很簡單。所需做的只是給出每條 SELECT 語句,在各條語句之間放上關(guān)鍵字 UNION。
舉一個(gè)例子,假如需要價(jià)格小于等于 5 的所有物品的一個(gè)列表,而且還想包括供應(yīng)商 1001 和 1002生產(chǎn)的所有物品(不考慮價(jià)格)。當(dāng)然,可以利用 WHERE 子句來完成此工作,不過這次我們將使用 UNION 。
正如所述,創(chuàng)建 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 檢索價(jià)格不高于 5 的所有物品。第二條 SELECT 使用 IN 找出供應(yīng)商 1001 和 1002 生產(chǎn)的所有物品。
為了組合這兩條語句,按如下進(jìn)行:
輸入:
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 關(guān)鍵字分隔。 UNION 指示MySQL執(zhí)行兩條 SELECT 語句,并把輸出組合成單個(gè)查詢結(jié)果集。
作為參考,這里給出使用多條 WHERE 子句而不是使用 UNION 的相同查詢:
輸入:
select vend_id,prod_id,prod_price from products where prod_price <= 5 or vend_id in (1001,1002);
在這個(gè)簡單的例子中,使用 UNION 可能比使用 WHERE 子句更為復(fù)雜。但對于更復(fù)雜的過濾條件,或者從多個(gè)表(而不是單個(gè)表)中檢索數(shù)據(jù)的情形,使用 UNION 可能會使處理更簡單。
以上就是mysql 組合查詢:什么是組合查詢?如何創(chuàng)建組合查詢的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
學(xué)習(xí)教程快速掌握從入門到精通的SQL知識。