这里我有一个似乎很容易解决的问题,但我找不到解决方案。我需要选择按产品分组的表标记中具有标记 X和Y的所有行。
标签
+ --------- + ------ +
|产品|标签|
+ --------- + ------ +
| 1 | x |
+ - + - +
| 1 | y |
+ - + - +
| 2 | y |
+ - + - +
| 2 | z |
+ - + - +
| 3 | x |
+ - + - +
| 3 | y |
+ - + - +
因此,在这种情况下,要选择的行是产品1和3,因为它们都有标签X和Y
感谢大家的帮助!
答案 0 :(得分:1)
SELECT product
FROM tags
WHERE tag IN ('x', 'y')
GROUP BY product
HAVING COUNT(*) = 2
答案 1 :(得分:0)
我会使用类似的东西......
SET @tags := 'X,Y';
SELECT product, tag
FROM tags
GROUP BY product
HAVING GROUP_CONCAT(DISTINCT tag ORDER BY tag SEPARATOR ',') = @tags;