假设有两个表:
表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
与往常一样,有很多方法可以改变这只猫的皮肤,并具有不同的性能。
使用a时GROUP BY,输出中的所有列都必须位于GROUP BY或聚合函数中- 即使messageID中的其他列没有变化,它们仍需要位于中GROUP BY。
GROUP BY