表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数据库

解决方案 »

  1.   

    select aId from Person_Relation_Book where cId in (1,2,3)
      

  2.   

    根据id查id这太容易了吧。select aid from Person_Relation_Book where cid=?就可以了。如果是要求根据book.name查询person.name,那就需要使用多级子查询完成。
      

  3.   

    按照这样的写法会查找结果是
    aId
    1
    2
    我想要的结果是1(aId=2的Person只满足cId=1部分条件)
    如果cId只有1,2两个值?则查出来的结果为null
      

  4.   

    什么乱七八糟的,看不懂
    你是不是要拥有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
      

  5.   

    1,2,3不是代表book表中的所有书!!
      

  6.   


    select prb.aid from Person_Relation_Book prb
    where prb.cld in (1, 2, 3);
      

  7.   

    用in不管用的,这样查询结果是
    aId
    1
    2