我有以下数据库模式
我需要获取具有标签名称'A'且没有标签名称'B'的用户的fname,lname,例如,用户X既具有标签A,也具有标签B,因此不应包括他如果另一个用户Y仅具有标签“ A”,则应将其包括在结果中。没有子查询就可以吗?我必须更改架构吗?
答案 0 :(得分:1)
GROUP BY
输入用户名和用户名。HAVING
子句与SUM()
聚合一起使用以过滤掉案例。SUM(name = 'B')
将为零,请加入联接。请尝试以下操作:
SELECT
u.user_id,
u.fname,
u.lname
FROM
user AS u
JOIN tags AS t ON t.user_id = u.user_id
JOIN tags_def AS td ON td.tag_id = t.tag_id
GROUP BY
u.user_id,
u.fname,
u.lname
HAVING
SUM(td.name = 'A') AND
SUM(td.name = 'B') = 0