Mysql多对多(AND Where)选择

时间:2016-12-09 18:13:06

标签: mysql many-to-many entity-attribute-value

我有这个数据库设置:

  • 产品

    • ID
    • [字段...]
  • 标签

    • ID
    • [字段...]
  • product_tag

    • ID
    • PRODUCT_ID
    • TAG_ID

如果我的数据库中有此记录

  • 产品
    • 产品A [id:1]
    • 产品B [id:2]
    • 产品C [id:3]
  • 标签
    • 标签A [id:1]
    • 标签B [id:2]
    • 标签C [id:3]
  • Produc_Tag
    • [product_id:1,tag_id:1]
    • [product_id:1,tag_id:2]
    • [product_id:2,tag_id:1]
    • [product_id:2,tag_id:3]
    • [product_id:3,tag_id:1]
    • [product_id:3,tag_id:2]

如何查询以获取具有tag_id 1和2的产品(必须使用tag_id为1 AND 2的产品) 在这个例子中:"产品A"和"产品C"

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

使用此

{{1}}