一个数据库查询的问题

博客围绕表user_book展开,该表记录用户拥有书籍信息。要通过一个SQL语句找出拥有任意给定bookid的所有书籍的用户。经过多次尝试,给出了相应SQL语句,关键是找出用户拥有指定bookid中书籍的数量,若与指定数量一致则满足条件。
有一个表user_book记录了一名用户拥有的书籍的信息,表的数据如下:
key   userid    bookid
 1   1    2
 2   1    3
 3   1    4
 4   2    1
 5   2    3
这表明这名用户1拥有2,3,4三本书,用户2拥有1,3两本书,以此类推。
现在要用1个SQL语句得到下面问题的结果:
给出任意个bookid,要求找出拥有所给出的所有书籍的用户。这个看似
简单的问题却困扰了我们半天,尝试了很多次以后,终于想出下面的办法,
SQL语句如下:
select a.user from (
     select distinct userid as user,count(distinct bookid) as num
     from user_book where bookid in (1,3) group by userid) as a
 where a.num=2
这个语句的关键之处在于找出用户所拥有的包含在所要找的bookid中书籍
的数量。where语句中a.num=2中的2就是用户所要找的书籍的数量。这个数量
如果跟所要找的书籍数量一致,则此用户满足条件。
问题得以解决
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值