27,582
社区成员




select distinct c2.name from cte c1 join cte c2 on c1.product=c2.product where c1.name='张三'
and c2.name!='张三' --如果需要显示'张三' and则省略
SELECT 用户名
FROM 订单表 T1
WHERE 用户名<>'张三'
AND NOT EXISTS(SELECT 1 FROM 订单表 T2 WHERE 用户名='张三'
AND NOT EXISTS(SELECT 1 FROM 订单表 T3 WHERE T3.用户名=T1.用户名 AND T2.购买产品=T3.购买产品))
GROUP BY 用户名
这上写法,逻辑有点绕~~;WITH CTE AS(
SELECT 用户名,购买产品 FROM 订单表
WHERE 用户名='张三'--条件在这输入
)
SELECT 用户名
FROM 订单表 T1
WHERE 用户名 NOT IN(SELECT 用户名 FROM CTE)
AND 购买产品 IN(SELECT 购买产品 FROM CTE)
GROUP BY 用户名
HAVING COUNT(DISTINCT 购买产品)=(SELECT COUNT(DISTINCT 购买产品)FROM CTE)