多數sql查詢都只包含從乙個或多個表中返回資料的單條select語句。mysql也允許執行多個查詢(多條select語句),並將結果作為單個查詢結果集返回。這些組合查詢通常稱為並(union)或復合查詢(compound query)。有兩種基本情況,其中需要使用組合查詢:
**小於等於5的所有物品的乙個列表,而且還想包括**商1001和1002生產的所有物品(不考慮**)。
mysql>
select vend_id,prod_id,prod_price
from products
where prod_price<=
5union
select vend_id,prod_id,prod_price
from products
where vend_id in
(1001
,1002);
+---------+---------+------------+
| vend_id | prod_id | prod_price |
+---------+---------+------------+
|1003
| fc |
2.50||
1002
| fu1 |
3.42||
1003
| sling |
4.49||
1003
| tnt1 |
2.50||
1001
| anv01 |
5.99||
1001
| anv02 |
9.99||
1001
| anv03 |
14.99||
1002
| ol1 |
8.99|+
---------+---------+------------+
8rows
inset
(0.04 sec)
union必須由兩條或兩條以上的select語句組成,語句之間用關鍵字union分隔(因此,如果組合4條select語句,將要使用3個union關鍵字)。
如果遵守了這些基本規則或限制,則可以將並用於任何資料檢索任務。
mysql>
select vend_id,prod_id,prod_price
from products
where prod_price<=
5union
allselect vend_id,prod_id,prod_price
from products
where vend_id in
(1001
,1002);
+---------+---------+------------+
| vend_id | prod_id | prod_price |
+---------+---------+------------+
|1003
| fc |
2.50||
1002
| fu1 |
3.42||
1003
| sling |
4.49||
1003
| tnt1 |
2.50||
1001
| anv01 |
5.99||
1001
| anv02 |
9.99||
1001
| anv03 |
14.99||
1002
| fu1 |
3.42||
1002
| ol1 |
8.99|+
---------+---------+------------+
9rows
inset
(0.00 sec)
select語句的輸出用order by子句排序。在用union組合查詢時,只能使用一條order by子句,它必須出現在最後一條select語句之後。對於結果集,不存在用一種方式排序一部分,而又用另一種方式排序另一部分的情況,因此不允許使用多條order by子句。
mysql>
select vend_id,prod_id,prod_price
from products
where prod_price<=
5union
allselect vend_id,prod_id,prod_price
from products
where vend_id in
(1001
,1002
)order
by vend_id,prod_price;
+---------+---------+------------+
| vend_id | prod_id | prod_price |
+---------+---------+------------+
|1001
| anv01 |
5.99||
1001
| anv02 |
9.99||
1001
| anv03 |
14.99||
1002
| fu1 |
3.42||
1002
| fu1 |
3.42||
1002
| ol1 |
8.99||
1003
| fc |
2.50||
1003
| tnt1 |
2.50||
1003
| sling |
4.49|+
---------+---------+------------+
9rows
inset
(0.01 sec)
mysql 組合查詢 mysql組合查詢
使用union 多數sql查詢都只包含乙個或多個表中返回資料的單條select語句。mysql也允許執行多個查詢 多條select語句 並將結果作為單個查詢結果集返回。這些組合查詢通常稱為並 union 有兩種情況需要使用組合查詢 在單個表查詢中從不同的表返回類似結構的資料 對單個表執行多個查詢,按...
MySQL組合查詢
組合查詢 mysql允許執行多個查詢 多條select語句 並將結果作為單個查詢結果集返回。一 建立組合查詢 可用union操作符來組合數條sql查詢。利用union,可給出多條select語句,將它們的結果組合成單個結果集。下面是兩個單個查詢例子 select vend id,prod id,pr...
MySQl組合查詢
union的規則 union必須由兩條以上的select 語句組成買漁具之間用關鍵字union分割,union中個每個查詢必須包含相同的列,表示式或者聚集函式,列資料型別必須相容,型別不必完全相同。但必須是dbms可以隱含的轉換的型別。union從查詢結果集中自動的去除了重複的行,並非所有的引擎支援...