gpt4 book ai didi

mysql - 计算未查看帖子的数量

转载 作者:行者123 更新时间:2023-11-29 06:16:53 24 4
gpt4 key购买 nike

我有一个像这样的数据库结构:

帖子

id
title
content

用户

id
....

post_reads

post_id
user_id

如何计算 ID 为 x 的特定用户没有阅读记录的帖子数量。

我的 SQL 查询当前如下所示:

SELECT COUNT(posts.id) AS c
FROM `posts`
LEFT JOIN `post_reads` ON (`posts`.`id` = `post_reads`.`post_id`)
LEFT JOIN `users` ON (post_reads.user_id = `users`.`id` AND post_reads.user_id = x)
WHERE users.id IS NULL
AND post_reads.user_id IS NULL

我知道我做错了什么,尽管我不确定那是什么。

最佳答案

这应该是窍门

SELECT COUNT(posts.id) AS c
FROM posts
LEFT JOIN post_reads ON posts.id = post_reads.post_id AND post_reads.user_id = x
LEFT JOIN users ON post_reads.user_id = users.id
WHERE users.id IS NULL

请注意,如果您对表用户执行任何操作不感兴趣,您可以将此查询缩短为:

SELECT COUNT(posts.id) AS c
FROM posts
LEFT JOIN post_reads ON posts.id = post_reads.post_id AND post_reads.user_id = x
WHERE post_reads.user_id IS NULL

您所做的第一个连接实际上是内部连接,因为它永远不会“失火”。

第二个连接有时会失败,因为其中有额外条件。
因此,使用 post_reads.some_id is null 永远不会成立。
为了使其工作,您还必须在该连接条件中重复AND post_reads.user_id = x,但是将其放入两次是愚蠢的,并且不需要,一次就可以了。 p>

PS 不要忘记用更有用的东西替换“x”:-)

关于mysql - 计算未查看帖子的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5903908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com