【发布时间】:2020-05-11 23:20:12
【问题描述】:
这是我试图理解的一个问题:
假设一个网站包含两个表,Customers 表和 Orders 表。
编写一个 SQL 查询来查找所有从未订购过任何东西的客户。
表:客户。
+----+-------+
| Id | Name |
+----+-------+
| 1 | Joe |
| 2 | Henry |
| 3 | Sam |
| 4 | Max |
+----+-------+
表格:订单。
+----+------------+
| Id | CustomerId |
+----+------------+
| 1 | 3 |
| 2 | 1 |
+----+------------+
以上表为例,返回以下内容:
+-----------+
| Customers |
+-----------+
| Henry |
| Max |
+-----------+
解决方案:
SELECT Name AS Customers
FROM Customers AS c LEFT JOIN Orders AS o ON c.Id = o.CustomerId
WHERE o.Id IS NULL;
有谁知道我们为什么使用 c.Id = o.CustomerId 来匹配列以及为什么我们选择 o.Id 为 Null 而不是其他列?
【问题讨论】:
-
这听起来像是复制/粘贴学校作业......我不认为这就是 SO 的目的。
-
听起来像是一个我们无法回答的意见问题。可以写成
SELECT Name FROM Customers where id not in(select customerid from orders group by customerid)和其他几种方式。 -
我相信 OP 要求的是加入两列的逻辑,而不是其他示例......
标签: mysql sql database join left-join