admin 管理员组

文章数量: 1184232


2024年4月14日发(作者:mysql创建表方法)

mysql的union用法

MySQL中的Union用法可以很方便地将两个或多个查询语句的结

果结合在一起,并输出其中不重复的值,它也能够让用户获得更多的

查询结果。Union的使用对于数据库管理工作者来说是一项非常有效

率和必要的技能。

一、UNION基本语法

MySQL的UNION的基本语法是由两个或多个SELECT语句组成的

字句,这些SELECT语句都必须拥有相同数量的字段,并且字段的类

型也必须一致。其语法格式如下:

SELECT column_name(s) FROM table1

UNION

SELECT column_name(s) FROM table2

通过UNION操作,我们可以将table1和table2中相同的字段进

行组合,而且只会出现不重复的值,可以使用ALL关键字来显示重复

值。

二、使用UNION示例

假如我们有一张表叫orders,其中有两个字段:status和

item_name。现在我们想要查询出所有已经发货但还未到达的产品名,

我们可以使用下面这条语句:

SELECT item_name FROM orders WHERE status=shipped

UNION

SELECT item_name FROM orders WHERE status=waiting

- 1 -

通过这一操作,可以获得所有已发货或未到达的商品的名称。这

样的简单查询就可以大大地节省了管理数据库的时间成本。

三、UNION的3个模式

MySQL的UNION可以使用三种不同的模式,它们是UNION,UNION

ALL和UNION DISTINCT。

(1)UNION

UNION运算符最常用,它将会过滤掉两个查询结果中存在的重复

值,以下是其使用示例:

SELECT item_name FROM orders WHERE status=shipped

UNION

SELECT item_name FROM orders WHERE status=waiting

上面的例子中,UNION操作将会过滤掉两个查询结果中出现的重

复的商品名称。

(2)UNION ALL

UNION ALL操作并不会过滤查询结果中出现的重复值,而是会显

示出所有的查询结果,其使用示例如下:

SELECT item_name FROM orders WHERE status=shipped

UNION ALL

SELECT item_name FROM orders WHERE status=waiting

上面的例子中,UNION ALL操作将会显示出两个查询结果中出现

的重复和不重复的商品名称。

(3)UNION DISTINCT

- 2 -

UNION DISTINCT操作与UNION类似,它也会过滤掉两个查询结

果中存在的重复值,但使用示例为:

SELECT item_name FROM orders WHERE status=shipped

UNION DISTINCT

SELECT item_name FROM orders WHERE status=waiting

以上就是MySQL的UNION的基本用法,当我们需要将两个查询结

果结合在一起,并且要求只出现不重复的值时,可以使用UNION操作

实现。另外,UNION操作也可以使用UNION ALL和UNION DISTINCT

两种模式,例如当我们需要显示出所有的查询结果时,就可以使用

UNION ALL,当我们需要过滤掉查询结果中重复的值时,可以使用

UNION DISTINCT。

- 3 -


本文标签: 查询 结果 使用