我有一个显示帖子的网站,用户可以对其进行投票。在他们投票后,我不希望它再次向该用户显示。所以我需要有一个查询来轮询所有帖子并返回用户尚未响应的帖子。
我认为拥有帖子表,响应表和用户表最简单。响应表可以包括postId和userId。这可以让我看到用户已经回复的所有帖子,但我无法弄清楚如何翻转以显示否定。这样做似乎也很慢。
答案 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