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”的临时列,用于指示联系人是“客户”还是“供应商”。

    LO Calc 中的 YLC 实用程序菜单

    LO Calc 中的 YLC 实用程序菜单

    Excel 中的 YLC 实用程序菜单

    Excel 中的 YLC 实用程序菜单