[英]Hibernate/SQL: Selecting records only if exist in one-to-many relationship, returns too many
[英]Counting the number of child records in a one-to-many relationship with SQL only
我有一个包含两个表的数据库: data
和file
。
file_id
是从data
到file
的外键。 因此,从data
到file
的关系是 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.