三张桌子: 客户(id_cus,cli_name等) 产品(id_pro,pro_name等) 订单(id_cus,id_pro)
表订单是客户与产品之间的关系。
问题是:如何获取仅选择特定产品的客户(id_cus)。
示例:产品A (id_pro = 100),并希望所有仅购买此产品A ,非产品的客户客户A和产品B 。仅产品A(id_pro = 100)。
SELECT `id_cus` from `Orders` where `id_pro=100;
这给了我所有曾经购买过产品A(也许也购买过产品B,C)的客户。
对不起,不知道。
答案 0 :(得分:1)
看看EXISTS
简单地:
SELECT o.id_cus
FROM orders o
WHERE o.id_pro = 100
AND NOT EXISTS (SELECT * from orders o2 where o2.id_cus = o.id_cus AND o2.id_pro != 100)
答案 1 :(得分:0)
您可以为此使用聚合:
select o.id_cus
from orders o
group by o.id_cus
having min(o.id_pro) = max(o.id_pro) and min(o.id_pro) = 100;