mysql - 选择一个类别中的所有书籍,但属于其他类别的书籍除外

标签 mysql sql

我有 3 个表:booksbook_categoriescategories

book_categories 表“连接”bookscategories。它包含列:idbook_idcategory_id

所以一本书可能属于多个类别,一个类别可能有很多书。

我需要查询从 given_category 中检索所有书籍,但属于 given_set_of_categories 的书籍除外。因此,例如,我想要所有来自 A 类的书籍,但前提是它们不属于 B 类或 C 类。我还需要按 Book.inserted 列对结果进行排序(排序)。

我知道如何使用 2 个连接从 given_category 中获取所有书籍,但不知道如何从结果中排除其他类别的一些书籍。我无法在 PHP 中过滤书籍,因为我正在对搜索结果进行分页。

最佳答案

where
  category_id = <given category>
  and books.book_id not in
(
 select book_id from book_categories
  where category_id in (<given set of cat>)
)
order by books.inserted

关于mysql - 选择一个类别中的所有书籍,但属于其他类别的书籍除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13408581/

相关文章:

php - 如果值等于数组的任何值,则 MySQL 更新列

mysql - 如何检查ActiveRecord中的 "autocommit"值

c# - 提高C#中大型SQL表的处理速度

sql - 选择在连接表中没有相应连接的行

sql - 按每笔销售显示库存详细信息

C#:作为字节数组下载后文件损坏

mysql - 当 datadase 在另一台机器上时如何配置 spatie/laravel-backup

php - 将两个查询的 MySQL 结果存储在 PHP 数组中

sql - sp_executesql 与手动执行给出不同的结果

php - SQL注入(inject)绕过mysql_real_escape_string()