当前位置: 首页 > 面试题库 >

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

祁永嘉
2023-03-14
问题内容

假设有两个表:

表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



 类似资料:
  • 问题内容: 我有两个实体类Category和Events。我需要连接两个表并获取与给定条件匹配的所有记录 我的SQL查询 我怎样才能将此SQL查询转换为hql并获取数据? 我在下面尝试了但没有得到结果?hibernate很新 用于hibernate映射的事件实体类 类别实体 提取类别方法 问题答案: 使用ORM工具时,您需要考虑Java对象。 根据您的问题,我认为您要编写的查询看起来像: 使用OR

  • 问题内容: 我在SQL Server输出中有一个查询, 假设我有一个具有某些字段的表(Ex.StudentMaster)-没有唯一约束。对于前 RollNumber和Name该表具有相同的数据。例如: 我只想获得第三条记录。如何识别此唯一记录? 问题答案: 任何一行都是第三行:-) 删除“第三”行:-) 删除最后一行:

  • 首先,在我的mysql数据库中,我有两个名为“users”和“users\u details”的表,它们是相互关联的 用户表 id(PK,AI,INT),用户名(VARCHAR,UNQ),密码(VARCHAR),全名(VARCHAR) 和用户表 id(PK,AI,INT),email(VARCHAR),phone(VARCHAR),address(VARCHAR),has_record(VARCH

  • 我正在寻找一种方法,以获得所有的DNS记录的网址<有没有一种方法可以在没有任何库的情况下使用C#实现这一点?

  • 问题内容: 我有一个包含以下各列的模型: 我有索引和。 现在,我想获取由排序的每个对象的第一个日志。 一种方法是对每个用户名运行以下查询: 但这显然会查询数据库很多次(等于用户名的数量)。有什么方法可以只执行一个数据库查询吗? 问题答案: 另一种情况: 返回每个“第一”条目 的整行。 这种Ruby语法应该可以工作:

  • 问题内容: K,所以我有两个表: 我想从类别中获取所有信息,并计算每个类别中的问题数(question_id)。 假设,第一个类别(计费)将有一个问题,第二个类别(安全)将有3个问题。 我已经试过了: 问题答案: 您想这样做: 在将确保没有问题类别获得与数= 0上市