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加入多个表排除一些记录的主要内容,如果未能解决你的问题,请参考以下文章

来自多个表的 MySQL 最新相关记录

跨两个数据库导入/导出表的某些列并排除 mysql 中的重复电子邮件

与工会加入不同的记录

MySQL 查询版本控制表中存在多个版本记录如何实现只取最大版本号对应记录

phpMyAdmin 一次为多个表“转储一些行”

从聚合函数中排除一些记录