我有一个显示帖子的网站,用户可以在上面投票。在他们投票一次之后,我不希望它再次显示给那个用户。因此,我需要一个查询,这个查询会投票所有帖子,并返回用户尚未响应的帖子。
我在想,最简单的做法是有一个posts表、responses表和user表。响应表可以包括一个postId和userId。这可以让我看到用户回复的所有帖子,但我想不出如何翻转它来显示否定。而且,这样做似乎会很慢。
发布于 2017-06-04 20:54:44
要查找所有尚未被给定用户查看的帖子,可以尝试以下查询:
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
https://stackoverflow.com/questions/44361857
复制相似问题