【发布时间】:2011-10-31 00:48:19
【问题描述】:
假设我有两张桌子:
表 A
消息ID |留言
1 |你好
2 |你好
等等。
表 B
评论ID |消息ID |评论
1 | 2 |这是对说 Bonjour 的人的评论
2 | 2 |这是对 Bonjour 的另一条评论
我要做的是运行一个查询,该查询从表 A 中提取所有记录(“消息”)以及表 B 中每条消息的所有 cmets 的计数。
结果是:
你好 - 0 cmets
Bonjour - 2 厘米
我知道这可能是使用连接与计数(*)的某种组合,但我似乎无法找到正确的语法。
有什么想法吗?
【问题讨论】:
-
感谢大家的帮助。这有效:
SELECT *, count(commentID) as commentcount FROM tableA LEFT JOIN tableB ON tableA.messageID = tableB.messageID GROUP BY message但是....我将如何从 TableA 中获取 ALL 记录,而只需从 TableB 中添加一个评论计数?当我尝试从 TableA 中选择 * 时,我得到一个 MSSQL“列 'tableA.messageID' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中”错误。 -
对不起,上面应该是
SELECT message, count(commentID) as commentcount FROM tableA LEFT JOIN tableB ON tableA.messageID = tableB.messageID GROUP BY message使用 * 会给我错误。
标签: sql sql-server database join count