zoukankan      html  css  js  c++  java
  • 14 组合查询

    1.组合查询

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

    需要使用组合查询主要有两种情况:

    (1)对一个查询中从不同的表返回数据结构

    (2)对一个表执行多个查询,按一个查询返回数据。

    2.创建组合查询

    可以使用UNION操作符来组合数条SQL查询,并将它们的结果组合成一个结果集。

    (1)在各条SELECT语句之间放上关键字UNION

    假设需要IllinoisIndianaMichigan等美国几个州的所有顾客的报表,还包括不管位于哪个州的所有的Fun4All

    首先来看单条语句。

    1)SELECTIllinoisIndianaMichigan等州的缩写传递给IN子句,检索出这些州的所有行,输入:

    SELECT cust_name, cust_contact, cust_email

    FROM Customers

    WHERE cust_state IN ('IL', 'IN', 'MI');

    输出:

    2)SELECT利用简单的相等测试找出所有Fun4All,输入:

    SELECT cust_name, cust_contact, cust_email

    FROM Customers

    WHERE cust_name = 'Fun4All';

    输出:

    3)组合这两条语句,输入:

    SELECT cust_name, cust_contact, cust_email

    FROM Customers

    WHERE cust_state IN ('IL', 'IN', 'MI')

    UNION

    SELECT cust_name, cust_contact, cust_email

    FROM Customers

    WHERE cust_name = 'Fun4All';

    输出:

    4)为了便于参考,使用多条WHERE子句,输入:

    SELECT cust_name, cust_contact, cust_email

    FROM Customers

    WHERE cust_state IN ('IL', 'IN', 'MI')

    OR cust_name = 'Fun4All';

    输出:

    可以看出,该查询使用UNIONWHERE子句更复杂,但对于较复杂的过滤条件,或从多个表中检索数据,使用UNION可能会更简单。

    (2)UNION规则

    UNION必须由两条或以上的SELECT语句,之间用关键字UNION分隔;

    UNION中每个查询必须包含相同的列、表达式或者聚集函数;

    列数据类型必须兼容。

    (3)包含或取消重复的行。

    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';

    输出:

    有一行出现两次。

    (4)对组合查询结果排序

    在使用UNION组合查询时,只允许使用一条ORDER BY子句,必须位于最后一条SELECT语句。

    输入:SELECT cust_name, cust_contact, cust_email

    FROM Customers

    WHERE cust_state IN ('IL', 'IN', 'MI')

    UNION

    SELECT cust_name, cust_contact, cust_email

    FROM Customers

    WHERE cust_name = 'Fun4All'

    ORDER BY cust_name, cust_contact;

    输出:

    虽然ORDER BY似乎只是最后一条SELECT语句的组成部分,但实际上,DBMS将用它来排序所有SELECT语句返回的所有结果。

  • 相关阅读:
    Java程序,猜大小游戏
    Java程序,取随机数的两种实现方法
    用Java程序判断是否是闰年
    Python学习-基础篇17 Django-进阶
    Python学习-基础篇16 Django-Ajax、Cookie
    Python学习-基础篇15 Django-MTV
    Python学习-基础篇14 Web框架本质及第一个Django实例
    Python学习-基础篇13 前端知识之Bootstrap框架
    Python学习-基础篇12 前端知识之Javascript知识
    Python学习-基础篇11 前端知识之HTML内容
  • 原文地址:https://www.cnblogs.com/Sumomo0516/p/6131551.html
Copyright © 2011-2022 走看看