SQL 入门教程:组合(UNION)查询练习题

本文内容

  1. 编写 SQL 语句,将两个 SELECT 语句结合起来,以便从 OrderItems 表中检索产品 ID(prod_id)和 quantity。其中,一个 SELECT 语句过滤数量为 100 的行,另一个 SELECT 语句过滤 ID 以 BNBG 开头的产品。按产品 ID 对结果进行排序。

    1
    2
    3
    4
    5
    6
    
    SELECT prod_id, quantity FROM OrderItems 
    WHERE quantity = 100 
    UNION
    SELECT prod_id, quantity FROM OrderItems 
    WHERE prod_id LIKE 'BNBG%' 
    ORDER BY prod_id;
    
  2. 重写刚刚创建的 SQL 语句,仅使用单个 SELECT 语句。

    1
    2
    3
    
    SELECT prod_id, quantity FROM OrderItems 
    WHERE quantity = 100 OR prod_id LIKE 'BNBG%' 
    ORDER BY prod_id;
    
  3. 我知道这有点荒谬,但这节部分中的一个注释提到过。编写 SQL 语句,组合 Products 表中的产品名称(prod_name)和 Customers 表中的顾客名称(cust_name)并返回,然后按产品名称对结果进行排序。

    1
    2
    3
    4
    5
    6
    
    SELECT prod_name 
    FROM Products 
    UNION
    SELECT cust_name 
    FROM Customers 
    ORDER BY prod_name;
    
  4. 下面的 SQL 语句有问题吗?(尝试在不运行的情况下指出。)

    1
    2
    3
    4
    5
    6
    7
    8
    
    SELECT cust_name, cust_contact, cust_email
    FROM Customers
    WHERE cust_state = 'MI'
    ORDER BY cust_name;
    UNION
    SELECT cust_name, cust_contact, cust_email
    FROM Customers
    WHERE cust_state = 'IL'ORDER BY cust_name;
    

    答:第一个 SELECT 语句后的 ; 不应该出现,它将终止该语句。同样,如果将结合 UNIONSELECT 语句进行排序,则只能使用一个 ORDER BY,并且它必须跟在最后一个 SELECT 之后。

请参阅

(完)

comments powered by Disqus

本文内容