我正在尝试获取论坛信息以及主题和帖子数。我正在使用mysql
SELECT forums.id, forums.url, forums.title, forums.description,
forums.icon, COUNT(topics.id) topics, COUNT(posts.id) posts
FROM forums JOIN
topics
ON forums.id = topics.to_forum JOIN
posts
ON topics.id = posts.to_topic
我尝试使用左联接,右联接,内联接(正如我在Internet上阅读的那样),但似乎没有任何效果。左联接仅在已创建论坛并填充数据时才起作用。如果没有论坛创建此NULL值,我需要它不返回任何记录。 这是表的结构,数据库中没有数据,所以我不明白为什么它返回这个
尝试附加GROUP BY forums.id
到您的查询。
您正在将aggregate(COUNT()
)操作与普通列操作混合在一起SELECT
。如果您进行任何汇总操作而您不进行任何操作,则GROUP BY
始终会从处返回正好一行SELECT
。在标准SQL中,查询将失败。非标准的MySql:它想在非汇总列中猜测您想要的内容。如果没有要计算的行,则为猜测NULL
。
请阅读以下内容:dev.mysql.com/doc/refman/8.0/en/group-by-handling.html
换句话说,即使您未COUNT()
在查询中使用查询,也需要立即对其进行理解GROUP BY
。
谢谢解决了