Mer*_*glu 3 sql count distinct one-to-many
我有一个包含两个表的数据库:data
和file
.
file_id
是一个外键data
来file
.因此,从关系data
到file
被N到一个.
有没有办法只使用SQL来查找data
引用每条记录的记录数file
?
例如,我可以找到有多少数据记录引用id为13的文件:
select count(*) from data where file_id = 13;
Run Code Online (Sandbox Code Playgroud)
我想知道每个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 |
+---------+----------+
Run Code Online (Sandbox Code Playgroud)
Distinct返回每行的不同值,而不是每个组.MySql允许使用没有group by的聚合函数,这完全是误导性的.在这种情况下,你有一个随机的file_id和所有记录的计数 - 当然你不打算这样做.
要获取组计数(或任何其他聚合函数),请使用group by子句:
select file_id, count(*)
from data
group by file_id
Run Code Online (Sandbox Code Playgroud)
通过...分组...
SELECT file_id, COUNT(*)
FROM data
GROUP BY file_id
Run Code Online (Sandbox Code Playgroud)