表Person
id name
1 jack
2 mike 表Person_Relation_Book
id aId cId
1 1 1
2 1 2
3 1 3
4 2 1表Book
id name
1 aaa
2 bbb
3 ccc
Mysql数据中存在这样三张表,想查询得到这样的结果,得到拥有BookId为1,2,3的PersonId,请教大家用mysql要怎么编写脚本mysql数据库
id name
1 jack
2 mike 表Person_Relation_Book
id aId cId
1 1 1
2 1 2
3 1 3
4 2 1表Book
id name
1 aaa
2 bbb
3 ccc
Mysql数据中存在这样三张表,想查询得到这样的结果,得到拥有BookId为1,2,3的PersonId,请教大家用mysql要怎么编写脚本mysql数据库
aId
1
2
我想要的结果是1(aId=2的Person只满足cId=1部分条件)
如果cId只有1,2两个值?则查出来的结果为null
你是不是要拥有1,2,3所有书的人?
如果1,2,3代表的是book表里面所有的书,那么 SELECT aId
FROM Person_Relation_Book prb,
(SELECT count(*) AS cnt FROM Book) b
GROUP BY prb.aId
HAVING count(*) = b.cnt
如果是任意的组合的,比如1,3,7,18 SELECT aId
FROM Person_Relation_Book
WHERE cId IN (1,3,7,18)
GROUP BY aId
HAVING count(*) = 4
select prb.aid from Person_Relation_Book prb
where prb.cld in (1, 2, 3);
aId
1
2