mysql组合表表达式union,union distinct,union all详解

本文详细介绍了MySQL中UNION的使用规则,包括数据类型的匹配、列名统一、排序和去除重复行。通过示例演示了UNION、UNION DISTINCT和UNION ALL的区别,以及它们在效率上的考量。内容涵盖创建测试表、插入数据以及注意事项,帮助读者深入理解这些操作。
摘要由CSDN通过智能技术生成
1 union简介
    UNION属于集合运算符(set operator)允许我们把多个表表达式组合到一个复合表表达式中,它把一个表表达式的结果放在另一个表表达式的下面,在mysql数据库中提供了UNION和UNION ALL关键字,列于每个SELECT语句的对应位置的被选择的列应具有相同的类型。在第一个SELECT语句中被使用的列名称也被用于结果的列名称。
    如果UNION不使用关键词ALL,则所有返回的行都是唯一的,如同已经对整个结果集合使用了DISTINCT。如果指定了ALL,则会从所有用过的SELECT语句中得到所有匹配的行。DISTINCT关键词是一个自选词,不起任何作用,但是根据SQL标准的要求,在语法中允许采用。也可以在同一查询中混合UNION ALL和UNION DISTINCT。被混合的UNION类型按照这样的方式对待,即DISTICT共用体覆盖位于其左边的所有ALL共用体。DISTINCT共用体可以使用UNION DISTINCT明确地生成,或使用UNION(后面不加DISTINCT或ALL关键词)隐含地生成。
2 union语法
SELECT column, ...FROM table1
UNION [ALL | DISTINCT]
SELECT column, ...FROM table2
[UNION [ALL | DISTINCT]
SELECT column, ...FROM table3]
    union:用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行。
    union distinct:同union
    union all:用于合并两个或多个 SELECT 语句的结果集,保留表中重复行。

3 使用union的规则

    3.1 所有相关表表达式的select语句必须具有相同数目的表达式,并且放在一个表表达式下面的表表达式相同或可比较的数据类型。注意:如果两个数据类型相同或者如果表达式可以通过一个隐式条件转换为相同的数据类型,那么他们是可比较的。
    3.2 来自多张表的数据,多次sql语句取出的列名可以不一致,但最终列名以第一个sql语句的列名为准。
    3.3 order by只能最后的表表达式之后指定。在所有中间结果已经组合进来以后,排序对整个最终结果执行。
    3.4 select 子句不必包含distinct(但允许),因为使用union的时候,mysql自动从最终结果中移除重复的行。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值