小编典典

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

sql

假设有两个表:

表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。谢谢你的帮助。


阅读 299

收藏
2021-03-23

共1个答案

小编典典

标量子查询将起作用:

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

与往常一样,有很多方法可以改变这只猫的皮肤,并具有不同的性能。

使用a时GROUP BY,输出中的所有列都必须位于GROUP BY或聚合函数中-
即使messageID中的其他列没有变化,它们仍需要位于中GROUP BY

2021-03-23