问题描述:
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 |
+-----------+
假设一个网站包含两个表, 顾客表Customers和订单表Orders。编写一个SQL查询找出所有从未下过订单的顾客。
问题求解:
1、NOT IN
select Name from Customers c
where c.Id not in
(select CustomerId from Orders o);
2、not exists
select Name from Customers c
where not exists
(select CustomerId from Orders o where c.Id=o.CustomerId);
3、left join
select Name from Customers c
left join Orders o
on c.Id=o.CustomerId where o.Id is NULL;