MySQL組合查詢

2021-10-07 08:25:17 字數 3081 閱讀 9668

多數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從查詢結果集中自動的去除了重複的行,並非所有的引擎支援...