zoukankan      html  css  js  c++  java
  • 联合查询的 SQL 语法

    在联合查询中,每个选择查询(又称为 Select 语句)都有一个 SELECT 子句和 FROM 子句,还可能有 WHERE 子句。SELECT 子句列出包含要检索的数据的字段;FROM 子句列出包含这些字段的表;WHERE 子句则列出这些字段的条件。联合查询中的 Select 语句用 UNION 关键字组合在一起。

    对于合并了两个选择查询的联合查询,其基本 SQL 语法如下:

    SELECT field_1[, field_2,…]
    FROM table_1[, table_2,…]
    UNION [ALL]
    SELECT field_a[, field_b,...]
    FROM table_a[, table_b,…];
    

    例如,假设您有两个表,分别名为 Products 和 Services。这两个表都具有包含下列内容的字段:产品或服务的名称、价格、保修或担保条款以及是否以独占方式提供产品或服务。虽然 Products 表存储了保修信息,而 Services 表存储了担保信息,但基本信息是相同的(即特定的产品或服务是否符合其质量承诺)。您可以使用联合查询将两个表中的这四个字段合并在一起,例如:

    SELECT name, price, warranty_available, exclusive_offer
    FROM Products
    UNION ALL
    SELECT name, price, guarantee_available, exclusive_offer
    FROM Services;
    

    让我们逐行检查上面的语法示例。

    • SELECT name, price, warranty_available, exclusive_offer    这是一个 SELECT 子句,用于引入选择查询。SELECT 后面跟有一个标识符列表,用于指示要从中检索数据的字段。SELECT 子句必须始终至少列出一个字段。此 SELECT 子句列出了字段标识符 namepricewarranty_available  exclusive_offer
    • FROM Products    这是一个 FROM 子句。FROM 子句跟在 SELECT 子句之后,二者共同构成了一个基本的 Select 语句。FROM 后也跟有一个标识符列表,用于指示哪些表包含 SELECT 子句中列出的字段。FROM 子句必须始终至少列出一个表。此 FROM 子句列出了表标识符 Products
    • UNION ALL    这是一个 UNION 关键字以及一个可选的 ALL 关键字。UNION 指示将 UNION 前后的 SELECT 语句的结果合并在一起。

    在使用 ALL 关键字时,Union 生成的合并集中并不删除重复行。这样,Access 便无需检查重复行的结果,从而可以显著提高查询的性能。如果满足下列任一条件,则应使用 ALL 关键字:

    • 您确定选择查询不会生成任何重复行。
    • 结果中是否存在重复行无关紧要。
    • 您希望查看重复行。

    在本示例中,我们使用 ALL 关键字是因为我们既不期望会返回重复行,也没有略去它们的必要。

    • SELECT name, price, guarantee_available, exclusive_offer    这是第二个 SELECT 子句,用于引入联合查询中的第二个 SELECT 语句。在编写联合查询时,各个 SELECT 语句中的字段必须相互对应,这意味着各个 SELECT 语句必须具有相同的字段数,并且共享通用数据的字段必须以相同的顺序出现在子句中,同时这些字段必须具有相同或兼容的数据类型,如示例中所示。只有这些字段相互对应,才能在查询输出中将它们合并在一起。

     注释   联合查询输出中的字段名称从第一个 SELECT 子句中提取。因此,在本示例的查询输出中,来自字段“warranty_available”和“guarantee_available”的数据将被命名为“warranty_available”。

    • FROM Services    这是第二个 FROM 子句,用于完成联合查询中的第二个 SELECT 语句。与 SELECT 子句中的字段不同,联合查询对 FROM 子句没有表限制。您既可以创建在每个 FROM 子句中都使用相同的表的联合查询,也可以在 FROM 子句中使用不同数目的表。在我们的示例中,每个 FROM 子句都只有一个表。
  • 相关阅读:
    [转]移动端实现垂直居中的几种方法
    MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
    关于分布式计算的一些概念
    一份最中肯的Java学习路线+资源分享(拒绝傻逼式分享)
    Java多线程学习(八)线程池与Executor 框架
    深入理解工厂模式
    深入理解单例模式
    Java NIO 之 Buffer(缓冲区)
    Java NIO 概览
    分布式系统的经典基础理论
  • 原文地址:https://www.cnblogs.com/gqrbkw/p/3461042.html
Copyright © 2011-2022 走看看