教程 > mysql 教程 > 阅读:32

mysql union 操作符——迹忆客-ag捕鱼王app官网

本教程为大家介绍 mysql union 操作符的语法和实例。

描述

mysql union 操作符用于连接两个以上的 select 语句的结果组合到一个结果集合中。多个 select 语句会删除重复的数据。

语法

mysql union 操作符语法格式:

select expression1, expression2, ... expression_n
from tables
[where conditions]
union [all | distinct]
select expression1, expression2, ... expression_n
from tables
[where conditions];

参数

  • expression1, expression2, ... expression_n: 要检索的列。
  • tables: 要检索的数据表。
  • where conditions: 可选, 检索条件。
  • distinct: 可选,删除结果集中重复的数据。默认情况下 union 操作符已经删除了重复数据,所以 distinct 修饰符对结果没啥影响。
  • all: 可选,返回所有结果集,包含重复数据。

示例

下面我们通过例子来介绍 union 的使用。

我们现在有两个表列出了prospect(潜在客户)和customer(实际客户),还有第三个表列出了您向其购买用品的供应商 vendor。现在希望通过合并所有三个表中的姓名和地址来创建一个邮件列表。union 提供了一种方法来做到这一点。三个表具有以下内容

mysql> select * from prospect;
 --------- ------- ------------------------ 
|  fname  | lname |          addr          |
 --------- ------- ------------------------ 
| peter   | jones | 482 rush st., apt. 402 |
| bernice | smith |     916 maple dr.      |
 --------- ------- ------------------------ 
mysql> select * from customer;
 ----------- ------------ --------------------- 
| last_name | first_name |       address       |
 ----------- ------------ --------------------- 
| peterson  |   grace    | 16055 seminole ave. |
|   smith   |  bernice   |    916 maple dr.    |
|   brown   |   walter   |    8602 1st st.     |
 ----------- ------------ --------------------- 
mysql> select * from vendor;
 ------------------- --------------------- 
|      company      |        street       |
 ------------------- --------------------- 
| reddyparts, inc.  | 38 industrial blvd. |
| parts-to-go, ltd. | 213b commerce park. |
 ------------------- --------------------- 

三个表是否具有不同的列名都没有关系。以下查询说明了如何一次从三个表中选择名称和地址

mysql> select fname, lname, addr from prospect
-> union
-> select first_name, last_name, address from customer
-> union
-> select company, '', street from vendor;

结果如下:

 ------------------- ---------- ------------------------ 
|       fname       |   lname  |          addr          |
 ------------------- ---------- ------------------------ 
|       peter       |   jones  | 482 rush st., apt. 402 |
|      bernice      |   smith  |     916 maple dr.      |
|       grace       | peterson |   16055 seminole ave.  |
|      walter       |   brown  |     8602 1st st.       |
| reddyparts, inc.  |          |   38 industrial blvd.  |
| parts-to-go, ltd. |          |   213b commerce park.  |
 ------------------- ---------- ------------------------ 

如果要选择所有记录,包括重复记录,请使用 all 跟随在第一个 union 关键字的后面

mysql> select fname, lname, addr from prospect
-> union all
-> select first_name, last_name, address from customer
-> union
-> select company, '', street from vendor;

结果如下:

 ------------------- ---------- ------------------------ 
|       fname       |   lname  |          addr          |
 ------------------- ---------- ------------------------ 
|       peter       |   jones  | 482 rush st., apt. 402 |
|      bernice      |   smith  |     916 maple dr.      |
|       grace       | peterson |   16055 seminole ave.  |
|      bernice      |   smith  |     916 maple dr.      |
|      walter       |   brown  |     8602 1st st.       |
| reddyparts, inc.  |          |   38 industrial blvd.  |
| parts-to-go, ltd. |          |   213b commerce park.  |
 ------------------- ---------- ------------------------ 

查看笔记

扫码一下
查看教程更方便
网站地图