美文网首页
MySQL之组合查询(UNION)

MySQL之组合查询(UNION)

作者: wenmingxing | 来源:发表于2018-06-11 20:20 被阅读20次

本文主要介绍如何利用UNION操作符将多条SELECT语句组合成一个结果集。

I、组合查询基础

1、MySQL也允许执行多个查询(多条SELECT语句),并将结果作为单个查询结果集返回。这些组合查询通常称为(union)或组合查询。

2、通常情况下,组合相同表的两个查询完成的工作与具有多个WHERE子句条件的单条查询完成的工作相同。

II、创建组合查询

1、使用UNION来创建组合查询。

2.1 使用UNION

UNION的使用非常简单,我们通过一个实例来说明:

我们要组合下面两个SELECT语句:

# SELECT 1
> SELECT vend_id, prod_id, prod_price
   FROM products
   WHERE prod_price <= 5;
# SELECT 2  
> SELECT vend_id, prod_id, prod_price
   FROM products
   WHERE vend_id IN (1001, 1002);
# UNION
> 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);

2、如果所用UNION的列出现不同,则会报错:The used SELECT statements have a different number of columns

3、可以看出UNION关键字的作用就是,其相当于:

# SELECT OR
> SELECT vend_id, prod_id, prod_price
   FROM products
   WHERE prod_price <= 5
   OR vend_id IN (1001, 1002);
2.2 UNION使用规则

1、UNION必须由两条或两条以上的SELECT语句组成,语句之间,用关键字UNION分割;

2、每个查询中必须包含相同的列、表达式或聚集函数,不过各个列不需要以相同的次序列出。

3、列数据类型必须兼容:不必完全相同,但必须是DBMS可以隐含地转换的类型。

2.3 包含或取消重复的行

1、UNION的查询结果是,即完成了一个去重操作,而UNION ALL则会输出重复查询结果。

# UNION ALL  
> SELECT vend_id, prod_id, prod_price
   FROM products
   WHERE prod_price <= 5
   UNION ALL
   SELECT vend_id, prod_id, prod_price
   FROM products
   WHERE vend_id IN (1001, 1002);  

对比与之前UNION的输出结果,这里UNION ALL会将1002 FU1 3.42一行重复输出。

2.4 查询结果排序

1、同样使用ORDER BY对查询结果进行排序,但需要注意的是UNION组合查询中只能使用一个ORDER BY子句,其作用域整体的查询结果。

# UNION ORDER BY
> 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)
   ORDER BY prod_price;

【参考】
[1] 《MySQL必知必会》

相关文章

  • MySQL之组合查询(UNION)

    本文主要介绍如何利用UNION操作符将多条SELECT语句组合成一个结果集。 I、组合查询基础 1、MySQL也允...

  • MySQL 组合查询UNION

    通常情况下,SQL查询语句都只包含从一个或多个表中返回数据的单条语句。在MySQL中允许执行多条select语句的...

  • mysql组合查询union

    1.组合查询必须由2条或2条以上的select语句组成,语句之间使用union2.union的每个查询必须包含相同...

  • chapter17:组合查询

    利用UNION操作符将多条SELECT语句组合成一个结果集。 组合查询 MySQL允许执行多个查询并将结果作为单个...

  • mysql 合并结果集

    mysql查询时经常会把多个查询结果集进行合并。主要使用UNION 和 UNION ALL。两者区别如下: 对查询...

  • 11. 组合查询

    组合查询 SQL 允许执行多个查询,并将结果作为一个查询结果集返回,这些组合查询通常称为并(union)或复合查询...

  • mysql不规则排序笔记!

    因为是同张表可以使用union或者union all 来查询,缺点是查询语句比较长 MySQL可以通过field(...

  • 【MySQL笔记】5 组合查询

    MySQL笔记基于教材,笔记中用到的数据库可以点击该链接下载 组合查询 在各条SELECT语句间放上UNION即可...

  • 从0到1学习网络安全 【MySQL基础-MySQL UNION

    MySQL UNION 操作符 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一...

  • 数据库相关知识复习

    MYSQL 连接 UNION MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个...

网友评论

      本文标题:MySQL之组合查询(UNION)

      本文链接:https://www.haomeiwen.com/subject/qqzheftx.html