题目:
某网站包含两个表,Customers 表和 Orders 表。编写一个 SQL 查询,找出所有从不订购任何东西的客户。
Customers 表:
Id | |
---|---|
1 | Joe |
2 | Henry |
3 | Sam |
4 | Max |
Orders 表:
Id | CustomerId |
---|---|
1 | 3 |
2 | 1 |
例如给定上述表格,你的查询应返回:
Customers |
---|
Henry |
Max |
分析:
此题应该用连接,那么使用左连接,把customer放左边。
逐步尝试:
SELECT
*
FROM
customers LEFT JOIN orders on customers.Id=orders.CustomerId
会发现
Id | Name | Id(1) | CustomerId |
---|---|---|---|
3 | Sam | 1 | 3 |
1 | Joe | 2 | 1 |
4 | Max | null | null |
2 | Henry | null | null |
仔细看其中规律
Max和Henry明显是在customer的Id里面有,但是order的CustomerId里面没有的。
那么稍加变化就能写出结果:
SELECT NAME AS
Customers
FROM
customers
LEFT JOIN orders ON customers.Id = orders.CustomerId
WHERE
orders.CustomerId IS NULL
网友评论