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

标签 mysql

我有以下情况需要破解。

  1. 我有带标签的元素。
  2. 这些标签属于类别 A 和 B。
  3. 我想按类别 A 标签搜索项目。
  4. 如果该项目已标记有两个类别的标签,我将不想要它们。
    +---------+--------+--------------+
    | 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 项。

最佳答案

您可以使用子查询来实现这一点。

试试这个:

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';

关于MySQL - 寻找与一个标签相关但不与另一个标签相关联的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36300207/

相关文章:

php - 按递增顺序排列多排序数字

mysql - EAV如何存储额外的字段值?

MySQL:强制使用唯一列而不使用唯一键

php - 如何在 mysql WHERE 查询中使用 SUBSTRING()

php - 数据库未出现在 MYSQL 控制台中

mysql - 是否可以按交替顺序输出两个子查询的联合结果?

mysql - 从 Excel 文件自动导入数据存储过程

php - 运行 .ics 脚本时出现错误消息?

php - MySQL 表中的 Twilio 数字数组 - PHP

java - 将数据插入MYSQL数据库