繁体   English   中英

仅统计与SQL一对多关系的子记录条数

[英]Counting the number of child records in a one-to-many relationship with SQL only

我有一个包含两个表的数据库: datafile

file_id是从datafile的外键。 因此,从datafile的关系是 n 对一的。

有没有办法只使用 SQL 来找出有多少data记录引用每个file记录?

例如,我可以找到有多少数据记录引用了 ID 为 13 的文件:

select count(*) from data where file_id = 13;

我想知道每个 file_id。 我尝试了以下命令来实现此目的,但它给出了所有 file_id 记录的计数:

mysql> select distinct file_id, count(*) from data where file_id in (select id from file);
+---------+----------+
| file_id | count(*) |
+---------+----------+
|       9 |     3510 |
+---------+----------+

Distinct 每行返回不同的值,而不是每个组。 MySql 允许在没有分组依据的情况下使用聚合函数,这完全是误导。 在这种情况下,您得到了一个随机的 file_id 和所有记录的计数——当然这是您不打算做的。

要获取组计数(或任何其他聚合函数),请使用 group by 子句:

select file_id, count(*)
  from data
 group by file_id

通过...分组...

SELECT file_id, COUNT(*)
  FROM data
 GROUP BY file_id
select file_id, count(*)
  from data
 group by file_id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM