SQL:如何根据不同表中的记录从一个表中选择多个记录的计数?
比方说,我有两个表:SQL:如何根据不同表中的记录从一个表中选择多个记录的计数?
表A
邮件ID |消息
1 |你好
2 |卓悦
等。
表B
CommentID | MessageID |评论
1 | 2 |这是对Bonjour说的人的评论
2 | 2 |这是对Bonjour
我试图做的是运行一个查询,从表A中的所有记录(“消息”)以及来自表B的每条消息的所有注释的计数一起运行。
其结果将是:
你好 - 0条评论
卓悦 - 2条评论
我知道这可能是使用了COUNT(*)联接的组合,但我不能似乎没有找到正确的语法。
任何想法?
对于基于消息的方法:
SELECT message, count(commentID)
FROM tableA LEFT JOIN tableB ON tableA.messageID = tableB.messageID
GROUP BY message
你会想要一个LEFT JOIN包括在表A的记录没有任何意见表B.
This works:'SELECT message,count(commentID)as commentcount FROM tableA LEFT JOIN tableB ON tableA。 messageID = tableB.messageID GROUP BY消息'但我怎么会得到**所有**来自tableA的记录和只是从tableB的计数? – PDD
这给一试:
SELECT a.MessageID, COUNT(*)
FROM TABLEA a
JOIN TABlEB b
ON b.MessageID = a.MessageID
GROUP BY a.MessageID
事情是这样的:
SELECT MessageID, COUNT(CommentID)
FROM "TABLE B"
GROUP BY MessageID
如果你需要另外的MessageID消息,你应该能够做这样的事情:
SELECT MessageID, MIN(Message), COUNT(CommentID)
FROM "TABLE A" LEFT JOIN "TABLE B" USING (MessageID)
GROUP BY MessageID
(Oracle语法,可能与MSSQL相同)
只是一个增编什么已经发布,因为如果你使用脚本语言的话,你可能需要列出SELECT列表中的所有内容:
SELECT tableA.messageID, message, count(commentID) AS commentCount
FROM tableA LEFT JOIN tableB ON tableA.messageID = tableB.messageID
GROUP BY message
谢谢大家的帮助。这工作:'SELECT *,计数(commentID)作为评论计数 从tableA LEFT JOIN tableB ON tableA.messageID = tableB.messageID GROUP BY消息'但....我怎么会得到** ALL **记录TableA,只是增加了TableB的评论计数?我得到一个MSSQL“Column”tableA。messageID'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中“当我尝试从TableA中选择*时出现错误 – PDD
对不起,上面应该是'SELECT message,count(commentID)as评论数目 FROM tableA LEFT JOIN tableB ON tableA.messageID = tableB.messageID GROUP BY message'使用*会给我错误 – PDD