老师你好:我想请问您一个sql: 就是有张表prod_info中有2个字段客户号字段cust_id和该客户购买的 50

产品类型字段prod_id如:客户号111买了基金产品(代码为01),保险产品(代码为02)那么我在数据表里面该客户111就有2条记录,那么我想查询即买了基金产品又买了保... 产品类型字段prod_id 如:客户号111买了基金产品(代码为01),保险产品(代码为02)
那么我在数据表里面该客户111就有2条记录,
那么我想查询即买了基金产品又买了保险产品的客户怎么查询?
其实我今天写了一个sql,感觉还可以,如下:
select cust_id from prod_info
where (prod_id='01' or prod_id='02')
group by cust_id having having count(*)=2
供参考,如果有更好的sql,请提交上来学习学习啊。
谢谢大家!!!
展开
 我来答
百度网友5183fa6
2013-06-15 · TA获得超过130个赞
知道小有建树答主
回答量:184
采纳率:0%
帮助的人:155万
展开全部
如果要详单
select * from prod_info a where exists(select 1
from prod_info where a.cust_id = cust_id and prod_id = '01') and
exists(select 1 from prod_info where a.cust_id = cust_id and prod_id =
'02')

如果只要户ID
select cust_id from prod_info a where exists(select 1 from prod_info where a.cust_id = cust_id and prod_id = '01') and exists(select 1 from prod_info where a.cust_id = cust_id and prod_id = '02') group by cust_id
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-06-15
展开全部
应该是and:select * from prod_info where prod_id = 01 and prod_id = 02
不过这也不对,给你写个伪代码吧,
select * from

select * from prod_info where prod_id = 01 as a
join
select * from prod_info where prod_id = 02 as b

where a.cust_id = b.cust_id
order by cust_id
大概这意思吧

不过题外话,感觉表设计的有问题啊,既然是prod_info,那key是什么呢?
起码肯定不是 cust_id和prod_id
而且感觉你所提的prod_id应改为prod_class_id吧?

可以就采纳吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-06-14
展开全部
那你就查prod_info里面prod_id是基金产品和保险产品的记录即可:select * from prod_info where prod_id = 01 or prod_id = 02这是最简单的写法,如果要优化的话还可以有另外方法,这个自己去了解一下吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水色浮云
2013-06-14 · TA获得超过604个赞
知道小有建树答主
回答量:222
采纳率:100%
帮助的人:274万
展开全部
WITH CTE 
AS( 
SELECT cust_id,
       prod_id,
       ROW_NUMBER() OVER(PARTITION BY cust_id ORDER BY cust_id) OD
  FROM prod_info
)
SELECT cust_id,
       prod_id
FROM CTE
WHERE OD =2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式