zoukankan      html  css  js  c++  java
  • SQL-Customers Who Never Order

    Suppose that a website contains two tables, the Customers table and the Orders table. Write a SQL query to find all customers who never order anything.

    Table: Customers.

    +----+-------+
    | Id | Name  |
    +----+-------+
    | 1  | Joe   |
    | 2  | Henry |
    | 3  | Sam   |
    | 4  | Max   |
    +----+-------+
    

    Table: Orders.

    +----+------------+
    | Id | CustomerId |
    +----+------------+
    | 1  | 3          |
    | 2  | 1          |
    +----+------------+
    

    Using the above tables as example, return the following:

    +-----------+
    | Customers |
    +-----------+
    | Henry     |
    | Max       |
    +-----------+

    思路:
    way 1:
    嵌套子查询,适合多表格比较的情况。在Customers表中选择Id不在Orders表的CustomerId集合里面的元组
    way 2:
    左外连接实现。首先要搞明白普通的连接功能是找到两个表格的公共集合然后形成新的表。
    左外连接的关键词是left join或者left outer join,然后再加一个on,其实质就是一种构造基本表的方式
    通过左外连接得到新的表后,再选出相应的元组即可

    way 1:

    select Name 
    from Customers
    where Id not in 
        (
            select CustomerId
            from Orders
        )
    

     way 2:

    select Name 
    from Customers as c
    left outer join Orders as d
    on c.Id = d.CustomerId
    where CustomerId is null
    
  • 相关阅读:
    postman使用详解
    如何测试一个水杯
    selenium3(java)之屏幕截图操作
    C语言随机点名程序
    关于测试执行的一些总结与思考
    小议SQL数据插入
    BS架构和CS架构的区别
    Oracle伪列(ROWNUM)的使用
    Loadrunner学习资料
    【Apache运维基础(2)】主配置文件说明
  • 原文地址:https://www.cnblogs.com/immortal-worm/p/5064726.html
Copyright © 2011-2022 走看看