如何从 SQL 中的另一个表中获取计数?

Posted

技术标签:

【中文标题】如何从 SQL 中的另一个表中获取计数?【英文标题】:How to Get A Count From Another Table In SQL? 【发布时间】:2012-08-10 00:25:52 【问题描述】:

我在 SQL 上有以下表格:

门萨耶

IdMensaje (int) PK NOT NULL
IdCliente (int)
CorreoCliente (varchar(100))
CorreosAdicionales (varchar(MAX))
Tema (varchar(100))
Mensaje (varchar(MAX))
Fecha (date)
Hora (time(5))

档案馆

IdArchivo (int) PK NOT NULL
IdMensaje (int)
Nombre (varchar(200))

外键 Mensajes.IdMensaje ON Archivos.IdMensaje

如果您想知道 Mensajes.IdCliente 是什么,是的,它与另一个表有一个外键,但这是另一回事

首先介绍...我正在制作一个程序,您可以在其中发送电子邮件...当您发送电子邮件时,我将插入 Mensajes 上的所有数据,如果您在邮件中附加文件,它将还为每个文件在 Archivos 上插入(显然 Archivos.IdMensaje 等于之前插入的 Mensajes.IdMensaje)

所以这是我的问题: 我想查询我从 Mensajes 获取所有数据的位置,但还要添加另一列,它将显示有多少文件附加到该消息...... 我设法使用了一个查询,其中我确实获得了该数据(嗯,有点)

SELECT Mensajes.IdMensaje, COUNT(Archivos.IdArchivo) AS Expr1
FROM Mensajes INNER JOIN Archivos ON Mensajes.IdMensaje = Archivos.IdMensaje
GROUP BY Mensajes.IdMensaje

但是它只显示附加了文件的消息,而不是结果为 0 的消息,我也想显示这些消息... 我该怎么做?

希望你能帮助我 谢谢

【问题讨论】:

那是左连接而不是内连接 【参考方案1】:

将您的INNER JOIN 更改为LEFT OUTER JOIN;这将从Mensajes 中选择所有记录,即使它们在Archivos 中没有相关记录。

【讨论】:

以上是关于如何从 SQL 中的另一个表中获取计数?的主要内容,如果未能解决你的问题,请参考以下文章

如何从表中选择所有列并计数?

如何从 Flutter 中的另一个路由/页面增加计数器

sql 获取每个表中的表名和记录计数

SQL查询根据值和字段名从两个表中获取计数

SwiftUI从Core Data实体中获取总项目(SQL术语中的行)计数[重复]

从 mysql 表中的同一列获取计数?