![](/img/trans.png)
[英]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.