嗨,您具有以下数据库架构:

items
- id
- item_name

items_cats
- item_id
- cat_id

categories
- id
- cat_name


从现在开始,我可以像这样在单个查询中选择项目和类别:

SELECT i.id, i.item_name, GROUP_CONCAT(c.cat_name) as cats
FROM items AS i, items_cats AS ic, categories AS c
WHERE ic.item_id = i.id AND ic.cat_id = c.id
GROUP BY i.id


结果是这样的:

id| item_name | cats
1 | Item 1    | Cat 1, Cat 2
2 | Item 2    | Cat 1
3 | Item 3    | Cat 3, Cat 5
4 | Item 4    | Cat 2, Cat 3, Cat 4


现在,我需要相同的结果,但只需要包含“ Cat 3”的记录。如果在WHERE子句中添加“ c.id = 3”,则结果如下:

id| item_name | cats
3 | Item 3    | Cat 3
4 | Item 4    | Cat 3


但是我想要项目中的其他类别,例如:

id| item_name | cats
3 | Item 3    | Cat 3, Cat 5
4 | Item 4    | Cat 2, Cat 3, Cat 4


我怎样才能做到这一点?

最佳答案

我找到了解决方案。只需在查询末尾添加以下内容:

HAVING cats LIKE CONCAT('%', (SELECT cat_name FROM categories WHERE id = 3), '%')

关于mysql - MySQL-无法使用GROUP_CONCAT并过滤结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39376166/

10-16 15:14
查看更多