我想让tag_it不等于10的所有用户
用户表:
id | firstname | lastname
1 | John | Doe
2 | Test | User
3 | Hello | World
user_tags表:
id | tag_id | user_id
1 | 10 | 1
2 | 10 | 2
3 | 11 | 2
这就是我正在尝试的
SELECT
users.id
FROM
users
JOIN user_tags ut ON ut.user_id = users."id"
AND ut.tag_id <> 10
WHERE
users.id IN (1,2,3)
预期输出为3。
答案 0 :(得分:2)
尝试一下:
SELECT *
FROM users u
WHERE NOT EXISTS(
SELECT 'X'
FROM user_tags ut
WHERE ut.user_id = u.id
AND ut.tag_id = 10
)
答案 1 :(得分:1)
可以用JOIN完成。恕我直言,不存在是一个更好的解决方案,但不是必需的。
select id
from (select u.id,ut.tag
from users u
left join user_tag ut
on u.id = ut.user_id
and ut.tag = 10
where u.id in (1,2,3)
) uut
where tag is null;