Mysql连接表,但仅包含特定行的结果

时间:2019-05-23 13:33:50

标签: mysql sql join

三张桌子: 客户(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)的客户。

对不起,不知道。

2 个答案:

答案 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;