了解联接:列出没有指定产品的类别

时间:2017-06-15 17:34:10

标签: mysql join

我是MySQL的新手,试图了解联接的工作原理。 我有两个表:categoriesproducts,每个表都包含idname字段。 第三个表是{_ 1}}和category_id的product_to_category(多对多)。

我想列出包含指定产品的所有类别(ID = 5)。 为此,我做了以下查询:

product_id

我想知道是否可能出现相反的情况:列出所有不包含指定产品的类别?

非常感谢!

1 个答案:

答案 0 :(得分:0)

我会使用not exists运算符:

SELECT c.`id`, c.`name`
FROM   `categories` c
WHERE  NOT EXISTS (SELECT *
                   FROM   `product_to_category` ptc
                   WHERE  c.`id` = ptc.`category_id` AND 
                          ptc.`product_id` = 5)