我有 3 个表 obl_books、obl_authors 和链接表 books_authors。问题是:编写查询以仅选择所有作者都属于印度国籍的书籍。
我为此写的查询是
SELECT obl_books.*, books_authors.author_id
FROM books_authors,obl_authors,obl_books
WHERE books_authors.author_id = obl_authors.author_id
AND books_authors.book_id=obl_books.book_id
GROUP BY books_authors.book_id
HAVING books_authors.author_id IN (SELECT obl_authors.author_id FROM obl_authors WHERE nationality='Indian')
国籍是 obl_authors 表的列,一本书可以有多个作者。
因此,如果 book_id (2) 具有 author_id (1)、author_id (2),其中 author_id (1) 和 (2) 是印度人,那么它应该返回该值,即使其中一位作者不是印度人也不应该返回。
但是我的查询甚至返回了那个 book_id。
我什至使用 ALL 关键字代替 IN 更改了我的 having 子句,但它不返回任何行。