选择具有标记X和Y的所有行以用于过滤结果

时间:2010-11-12 13:03:50

标签: mysql

这里我有一个似乎很容易解决的问题,但我找不到解决方案。我需要选择按产品分组的表标记中具有标记 X和Y的所有行。

标签

+ --------- + ------ +

|产品|标签|

+ --------- + ------ +

| 1 | x |

+ - + - +

| 1 | y |

+ - + - +

| 2 | y |

+ - + - +

| 2 | z |

+ - + - +

| 3 | x |

+ - + - +

| 3 | y |

+ - + - +

因此,在这种情况下,要选择的行是产品1和3,因为它们都有标签X和Y

感谢大家的帮助!

2 个答案:

答案 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;