更新
sqfiddle中有一个数据库模型:http ://sqlfiddle.com/#!2/8dbb0/10
我根据注释更新了问题。
原帖 我有三个表:
发布
标签
tag_to_post
让我们假设用户 2 已使用 tag_id 1。现在我想向用户 2 显示所有帖子,另一个用户已用 tag_id 1 标记,但用户 2 到目前为止尚未用 tag_id 1 标记。
查询:
SELECT posts.id AS post_id, tags.id AS tag_id, tag_to_post.user_id AS
user_tagged_post
FROM posts
LEFT JOIN tag_to_post ON tag_to_post.post_id = posts.id
LEFT JOIN tags ON tags.id = tag_to_post.tag_id
WHERE tags.id =1
产生类似的东西:
post_id | tags_id | user_tagged_post
1 | 1 | 1
1 | 1 | 2
2 | 1 | 2
3 | 1 | 1
所以应该只剩下post id 3。
首先,我尝试使用 where 语句,例如:
WHERE tags.id = 1 AND tag_to_post.user_id != '2'
但这当然不排除 post_id 1 因为它是重复的。我认为在 WHERE 子句之前应该有一个 DISTINCT 或 GROUPED BY,但这似乎是不允许的。那么唯一的方法是子查询?到目前为止我还没有找到解决方案。有任何想法吗?