Mysql 多对多(以及在哪里)select

Mysql Many-to-many (AND Where) select

我有这个数据库设置:

如果我的数据库中有这条记录




我如何查询得到具有 tag_id 1 和 2 的产品(它必须通过具有 tag_id 1 和 2 的产品) 在此示例中:"Product A" 和 "Product C"

SELECT *
FROM products
WHERE id IN (
    SELECT product_id
    FROM product_tag
    GROUP BY product_id
    HAVING GROUP_CONCAT(tag_id) = '1,2'
)

使用这个

SELECT P.id
FROM products P
INNER JOIN products_tags PT ON PT.product_id = P.id
WHERE PT.tag_id IN (1,2)
GROUP BY P.id
HAVING COUNT(PT.*) = 2