1045. 买下所有产品的客户
SQL架构Customer
表:
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| customer_id | int |
| product_key | int |
+-------------+---------+
product_key 是 Customer 表的外键
。
Product
表:
+-------------+---------+ | Column Name | Type | +-------------+---------+ | product_key | int | +-------------+---------+ product_key 是这张表的主键。
写一条 SQL 查询语句,从 Customer
表中查询购买了 Product
表中所有产品的客户的 id。
示例:
Customer 表: +-------------+-------------+ | customer_id | product_key | +-------------+-------------+ | 1 | 5 | | 2 | 6 | | 3 | 5 | | 3 | 6 | | 1 | 6 | +-------------+-------------+ Product 表: +-------------+ | product_key | +-------------+ | 5 | | 6 | +-------------+ Result 表: +-------------+ | customer_id | +-------------+ | 1 | | 3 | +-------------+ 购买了所有产品(5 和 6)的客户的 id 是 1 和 3 。
# 1.以Product为主表创建连接Customer,获取distinct的customer_id # 2.以customer_id分组,再通过having COUNT(*)=(SELECT COUNT(*) FROM Product)判断 SELECT customer_id FROM ( -- 应该是右连接,因为要确保顾客买的产品在产品表 SELECT distinct customer_id,c.product_key FROM Customer c RIGHT JOIN Product p ON c.product_key=p.product_key ) AS T GROUP BY customer_id having COUNT(*)=(SELECT COUNT(*) FROM Product)
标签:customer,product,1045,Product,客户,key,买下,+-------------+,id From: https://www.cnblogs.com/fulaien/p/17516458.html