选择用户未回复的所有帖子?

时间:2017-06-05 04:51:24

标签: mysql

我有一个显示帖子的网站,用户可以对其进行投票。在他们投票后,我不希望它再次向该用户显示。所以我需要有一个查询来轮询所有帖子并返回用户尚未响应的帖子。

我认为拥有帖子表,响应表和用户表最简单。响应表可以包括postId和userId。这可以让我看到用户已经回复的所有帖子,但我无法弄清楚如何翻转以显示否定。这样做似乎也很慢。

1 个答案:

答案 0 :(得分:1)

要查找给定用户尚未看到的所有帖子,您可以尝试以下查询:

SELECT p.*
FROM posts p
WHERE NOT EXISTS (SELECT 1 FROM responses r
                  WHERE r.postId = p.postId AND r.userId = <some value>)

作为使用NOT EXISTS的替代方法,您也可以使用LEFT JOIN来说明这一点:

SELECT p.*
FROM posts p
LEFT JOIN responses r
    ON p.postId = r.postId AND
       r.userId = <some value>
WHERE r.postId IS NULL