zoukankan      html  css  js  c++  java
  • 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 与别名组合,检索一个结果集。

  • 相关阅读:
    CTF-域渗透--SSH服务
    CTF-域渗透--SMB信息泄露
    CTF-域渗透--FTP服务后门利用
    Codeforces Round #628 (Div. 2)
    模板
    模板
    Educational Codeforces Round 6
    Educational Codeforces Round 5
    模板
    Codeforces Round #627 (Div. 3)
  • 原文地址:https://www.cnblogs.com/IPrograming/p/3327511.html
Copyright © 2011-2022 走看看