TOP

SQL UNION 语句

SQL UNION 说明

UNION 运算符用于组合两个或多个 SELECT 语句的结果集。

  • UNION 中的每个 SELECT 语句必须具有相同的列数
  • 列也必须具有相似的数据类型
  • 每个 SELECT 语句中的列也必须具有相同的顺序

  • UNION 语法

    SELECT column_name(s) FROM table1
    UNION
    SELECT column_name(s) FROM table2
    

    UNION ALL 语法

    UNION 运算符默认只选择不同的值。要允许重复值,请使用 UNION ALL:

    SELECT column_name(s) FROM table1
    UNION ALL
    SELECT column_name(s) FROM table2
    
    结果集中的列名通常与第一个 SELECT 语句中的列名匹配。

    演示数据库

    在本教程中,我们将使用著名的示例数据库“Northwind”。

    以下是表“Customers”(“客户”)中的示例:

    CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
    1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
    2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
    3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
    4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
    5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

    以及表“Suppliers”(“供应商”)中的示例:

    SupplierIDSupplierNameContactNameAddressCityPostalCodeCountryPhone
    1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonaEC1 4SDUK(171) 555-2222
    2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA(100) 555-4822
    3Grandma Kelly's HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA(313) 555-5735
    4Tokyo TradersYoshi Nagase9-8 Sekimai Musashino-shiTokyo100Japan(03) 3555-5011
    5Cooperativa de Quesos 'Las Cabras'Antonio del Valle SaavedraCalle del Rosal 4Oviedo33007Spain(98) 598 76 54

    SQL UNION 示例

    以下SQL语句从Customers和Suppliers表中选择城市(仅不同值):

    Run SQLSELECT City FROM Customers 
    UNION 
    SELECT City FROM Suppliers 
    ORDER BY City
    
    如果某些客户或供应商具有相同的城市 (City),则每个城市将仅指定一次,因为 UNION 仅选择不同的值。 使用 UNION ALL 也可以选择重复值!

    SQL UNION ALL 示例

    以下 SQL 语句从“客户”和“供应商”表中选择城市(也是重复的值):

    Run SQLSELECT City FROM Customers 
    UNION ALL 
    SELECT City FROM Suppliers 
    ORDER BY City
    

    SQL UNION 与 WHERE 一起

    以下SQL语句从Customers和Suppliers表中选择德国城市(仅不同值):

    Run SQLSELECT City, Country FROM Customers 
    WHERE Country = 'Germany' 
    UNION 
    SELECT City, Country FROM Suppliers 
    WHERE Country = 'Germany' 
    ORDER BY City
    

    SQL UNION ALL 与 WHERE 一起

    以下 SQL 语句从“客户”和“供应商”表中选择德国城市(也是重复的值):

    Run SQLSELECT City, Country FROM Customers 
    WHERE Country = 'Germany' 
    UNION ALL 
    SELECT City, Country FROM Suppliers 
    WHERE Country = 'Germany' 
    ORDER BY City
    

    另一个 SQL UNION 示例

    以下 SQL 语句列出了所有客户和供应商:

    Run SQLSELECT 'Customer' AS Type, ContactName, City, Country 
    FROM Customers 
    UNION 
    SELECT 'Supplier', ContactName, City, Country 
    FROM Suppliers
    

    请注意,上面的“AS Type”是一个别名。 SQL 别名用于为表或列提供临时名称。 该别名仅在请求期间存在。 因此,我们在这里创建了一个名为“Type”的临时列,用于指示联系人是“客户”还是“供应商”。