• SQL 必知必会·笔记<12>组合查询


    什么是组合查询

    SQL 通过执行多个查询(多条SELECT 语句),并将结果作为一个查询结果集返回。这些组合查询通常称为并(union)或复合查询(compound query)。

    什么时候使用组合查询

    一般以下两种情况需要使用组合查询:

    • 在一个查询中从不同的表返回结构数据;
    • 对一个表执行多个查询,按一个查询返回数据。

    提示:组合查询和多个WHERE 条件

    多数情况下,组合相同表的两个查询所完成的工作与具有多个WHERE子句条件的一个查询所完成的工作相同。换句话说,任何具有多个WHERE 子句的SELECT 语句都可以作为一个组合查询

    1. 创建组合查询

    可用UNION 操作符来组合数条SQL 查询。利用UNION,可给出多条SELECT 语句,将它们的结果组合成一个结果集。

    使用UNION示例:

    1 SELECT cust_name, cust_contact, cust_email
    2 FROM Customers
    3 WHERE cust_state IN ('IL','IN','MI')
    4 UNION
    5 SELECT cust_name, cust_contact, cust_email
    6 FROM Customers
    7 WHERE cust_name = 'Fun4All';

    UNION规则

    • UNION 必须由两条或两条以上的SELECT 语句组成,语句之间用关键字UNION 分隔。
    • UNION 中的每个查询必须包含相同的列、表达式或聚集函数(不过,各个列不需要以相同的次序列出)。
    • 列数据类型必须兼容:类型不必完全相同,但必须是DBMS 可以隐含转换的类型(例如,不同的数值类型或不同的日期类型)。

    包含或取消重复的行

    默认情况下UNION 从查询结果集中自动去除了重复的行,,如果想返回所有的匹配行,可使用UNION ALL 替换UNION即可。

    使用UNION ALL:

    SELECT cust_name, cust_contact, cust_email
    FROM Customers
    WHERE cust_state IN ('IL','IN','MI')
    UNION ALL
    SELECT cust_name, cust_contact, cust_email
    FROM Customers
    WHERE cust_name = 'Fun4All';

    提示:UNION 与WHERE

    UNION 几乎总是完成与多个WHERE 条件相同 的工作。UNION ALL 为UNION 的一种形式,它完成WHERE 子句完成不了的工作。如果确实需要每个条件的匹配行全部出现(包括重复行), 就必须使用UNION ALL,而不是WHERE。

    2. 对组合查询结果排序

    使用UNION 组合查询时,只能使用一条ORDER BY 子句,它必须位于最后一条SELECT 语句之后

    提示:操作多个表

    UNION 在需要组合多个表的数据时很有用,即使是有不匹配列名的表,在这种情况下,可以将UNION 与别名组合,检索一个结果集。

  • 相关阅读:
    RabbitMQ 入门指南(Java)
    RabbitMQ 四种Exchange
    使用Spring AMQP开发消费者应用
    RestTemplate源码浅析
    Spring Boot整合Rabbitmq
    RestTemplate实践(及遇到的问题)
    binlog之三:binlog开启、查看
    微服务架构的六种模式
    SpringBoot自动化配置之四:@Conditional注解详解
    微服务理论之一:应用架构演进史
  • 原文地址:https://www.cnblogs.com/IPrograming/p/3327511.html
Copyright © 2020-2023  润新知