Mysql加入多个表排除一些记录

Posted

技术标签:

【中文标题】Mysql加入多个表排除一些记录【英文标题】:Mysql Join Multiple Table Excluding Some Records 【发布时间】:2013-01-22 04:49:01 【问题描述】:

我在 mysql 方面不是很好,所以需要一些帮助。我有三张表作者(author_id,name),book(book_id,name),publisher(id,author_id,book_id)

我只想获取那些仅在 rdbms 上撰写/出版书籍的作者。

我试过了:

SELECT a.author_id, a.name, b.name as bookname
FROM author a
LEFT JOIN publisher p ON p.author_id = a.author_id
INNER JOIN book b ON b.book_id = p.book_id ANd b.name='rdbms'

这给了我所有写过关于 rdbms 书籍的作者以及其他作者也写过一些其他主题的书籍,所以我想排除他们。

【问题讨论】:

【参考方案1】:

试试这个

SELECT a.author_id, a.name, b.name as bookname
FROM author a
LEFT JOIN publisher p ON p.author_id = a.author_id
INNER JOIN book b ON b.book_id = p.book_id
group by a.author_id
HAVING count(p.book_id) = 1 AND bookname='rdbms'

【讨论】:

以上是关于Mysql加入多个表排除一些记录的主要内容,如果未能解决你的问题,请参考以下文章