183. 從不訂購的客戶(SQL)
阿新 • • 發佈:2021-01-28
一/題目描述
某網站包含兩個表,Customers 表和 Orders 表。編寫一個 SQL 查詢,找出所有從不訂購任何東西的客戶。
Customers 表:
±—±------+
| Id | Name |
±—±------+
| 1 | Joe |
| 2 | Henry |
| 3 | Sam |
| 4 | Max |
±—±------+
Orders 表:
±—±-----------+
| Id | CustomerId |±—±-----------+
| 1 | 3 |
| 2 | 1 |
±—±-----------+
例如給定上述表格,你的查詢應返回:
±----------+
| Customers |
±----------+
| Henry |
| Max |
±----------+
二、題解
方法一:使用左查詢和null值過濾
select
`Name` Customers
from
Customers left join Orders on Customers.Id = Orders. CustomerId
where Orders.CustomerId is null
方法二:使用子查詢和 NOT IN 子句
SELECT
`Name` Customers
FROM
Customers
WHERE
Id not in (SELECT CustomerId FROM Orders)