有一个表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就是用户所要找的书籍的数量。这个数量
如果跟所要找的书籍数量一致,则此用户满足条件。
问题得以解决
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就是用户所要找的书籍的数量。这个数量
如果跟所要找的书籍数量一致,则此用户满足条件。
问题得以解决