求SQL语句

huangqing_80 2015-04-21 08:32:57
订单表,内容如下:
用户名 购买产品
张三 电视机
张三 冰箱
李四 电视机
李四 冰箱
李四 自行车
王五 电视机
赵六 电视机
赵六 冰箱
....

购买了张三所购买的产品的用户。
就是张三购买了电视机和冰箱,求购买了电视机和冰箱的所有用户名,上述只是举例,有可能张三购买的品种更多,用SQL语句该怎么写
...全文
141 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Neo_whl 2015-04-21
  • 打赏
  • 举报
回复

                select distinct c2.name from cte c1 join cte c2 on c1.product=c2.product where c1.name='张三'
  and c2.name!='张三' --如果需要显示'张三' and则省略
还在加载中灬 2015-04-21
  • 打赏
  • 举报
回复
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 用户名
这上写法,逻辑有点绕~~
还在加载中灬 2015-04-21
  • 打赏
  • 举报
回复
;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)

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧