gpt4 book ai didi

SQL:从一个表中获取所有记录并从第二个表中获取记录数?

转载 作者:太空狗 更新时间:2023-10-30 01:48:03 24 4
gpt4 key购买 nike

假设有两个表:

表A

messageID / Message                     / More..
1 / This is the first message / Etc..
2 / This is the second message / Etc..
3 / This is the third message / Etc..

表 B

commentID / messageID / Comment 
1 / 2 / This is a comment to the second message
2 / 2 / This is another comment to the second message
3 / 3 / This is a comment to the third message

表格之间的纽带是 messageID 字段。

我想要一个生成这样结果的查询,我从表 A 中提取所有字段,并计算表 B 中每条消息的评论数,如下所示:

messageID  / Message                    / More...  / CommentCount
1 / This is the first message / etc... / 0
2 / This is the second message / etc... / 2
3 / This is the third message / etc... / 1

我试过这样的:

SELECT tableA.*, count(commentID) as commentcount 
FROM tableA LEFT JOIN tableB ON tableA.messageID = tableB.messageID GROUP BY messageID

但它不起作用。有任何想法吗?似乎应该可以在一个查询中执行此操作。我正在使用 MSSQL。感谢您的帮助。

最佳答案

标量子查询将起作用:

SELECT tableA.*
,(SELECT count(commentID) FROM tableB WHERE tableA.messageID = tableB.messageID) as commentcount
FROM tableA

像往常一样,有很多方法可以给这只猫蒙皮,而且性能各不相同。

当使用 GROUP BY 时,输出中的所有列都需要在 GROUP BY 中或在聚合函数中 - 即使其他列没有变化messageID 中的列,它们仍然需要在 GROUP BY 中。

关于SQL:从一个表中获取所有记录并从第二个表中获取记录数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7247902/

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