此mysql语句获取未被用户标记的帖子。
就像现在一样,我收到了标记的帖子ID,然后没有在这组ID中获得帖子。
SELECT * FROM posts WHERE posts.id NOT IN
(SELECT p2.id FROM posts p2 LEFT JOIN flagged_posts
ON flagged_posts.user_id = ? WHERE flagged_posts.post_id = p2.id)
我觉得可能有更好(更快)的方式来做这件事,例如只有一个选择和一个连接,但我不确定
答案 0 :(得分:0)
您可以使用条款EXISTS
执行此操作。
SELECT * FROM posts
WHERE
NOT EXISTS
(SELECT 1
FROM flagged_posts
WHERE flagged_posts.post_id=posts.post_id AND flagged_posts.user_id=?)
或者,您可以使用LEFT OUTER JOIN
。
SELECT *
FROM posts
LEFT OUTER JOIN flagged_posts ON posts.post_id = flagged_posts.post_id
AND flagged_posts.user_id=?
WHERE flagged_posts.post_id IS NULL