MySQL - 查找与一个标签相关但不与另一个标签相关联的项目

时间:2016-03-30 05:12:28

标签: mysql

我有以下情况要破解。

  1. 我有标记的项目。
  2. 这些标签属于A类和B类。
  3. 我想按类别A标签搜索商品。
  4. 如果该项目已使用两个类别的标签进行标记,我将不会要求它们。
  5.     +---------+--------+--------------+
        | Item ID | Tag ID | Tag Category |
        +---------+--------+--------------+
        |       1 |      1 | A            |
        |       1 |      2 | A            |
        |       1 |      3 | B            |
        |       2 |      1 | A            |
        |       2 |      2 | A            |
        |       3 |      3 | B            |
        +---------+--------+--------------+
    

    因此,当我运行查询时,我应该只返回第2项。

1 个答案:

答案 0 :(得分:0)

您可以使用sub-query来实现此目的。

试试这个:

select * from t1 
where `Item ID` in 
    (select `Item ID` from t1
    group by `Item ID`
    having COUNT(DISTINCT `Tag Category`) < 2)
    and `Tag Category` = 'A';