mysql基于多个条件选择行并链接到另一列

mysql基于多个条件选择行并链接到另一列,mysql,select,where-clause,Mysql,Select,Where Clause,我在解决这个问题上有点困难。。。欢迎提出任何建议 我有如下表格: collection_id book_id author =================================== 1 027 derek 2 090 bob 2 102 andy 2 102 bob 现在,我想检索一本书的

我在解决这个问题上有点困难。。。欢迎提出任何建议

我有如下表格:

collection_id    book_id    author
===================================  
    1             027       derek
    2             090       bob
    2             102       andy 
    2             102       bob
现在,我想检索一本书的书号,我知道这本书属于收藏2中,由andy和bob撰写(即102)

包含andy和bob的WHERE子句的查询不会返回任何内容,因为显然每行只有一个作者。包含andy或bob的WHERE子句的查询返回090和102的图书id,因为bob也是090图书的作者

你将如何为安迪和鲍勃所著的书获得合适的图书id


非常感谢你的想法

只能使用子查询解决。例如,看一看

或者,简化(但不对称):

或者,在子查询中使用
COUNT

SELECT book_id FROM book_table b
    WHERE (SELECT COUNT(1) FROM book_table b2
            WHERE b2.book_id=b.book_id AND b2.author='andy') > 0
        AND author='bob'
        AND collection_id=2

下面的例子怎么样:

collection_id    book_id    author
===================================  
    1             027       derek
    2             090       bob
    2             102       andy 
    2             102       bob

test\u books
中选择
book\u id
,其中
collection\u id
='2'和
author
在('andy',bob')组中,通过
book\u id
具有count(*)>1

啊,exists关键字。。。明亮的我的教育还在继续。。。非常感谢!我添加了格式化,但我认为您在两个子查询之间缺少了一个
SELECT book_id FROM book_table b
    WHERE (SELECT COUNT(1) FROM book_table b2
            WHERE b2.book_id=b.book_id AND b2.author='andy') > 0
        AND author='bob'
        AND collection_id=2
Select *
from collection
where author = 'andy' and book_id in (
    Select book_id from collection where author = 'bob'
)
SELECT *
FROM (SELECT *
      FROM table
      WHERE author = 'andy') a
     (SELECT *
      FROM table
      WHERE author = 'bob') b
WHERE a.book_id = b.book_id