簡體   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