5

2つのテーブルを持つデータベースがあります:datafile

file_iddataからへの外部キーfileです。したがって、からdataへの関係fileはnから1です。

dataSQLを使用して、の各レコードを参照するレコードの数を確認する方法はありfileますか?

たとえば、ID13のファイルを参照しているデータのレコードの数を見つけることができます。

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 |
+---------+----------+
4

3 に答える 3

9

Distinctは、一部のグループごとではなく、行ごとに異なる値を返します。MySqlでは、group byを使用せずに集計関数を使用できますが、これは完全に誤解を招く恐れがあります。この場合、ランダムなfile_idとすべてのレコードのカウントを取得しました。確かに、意図していなかったことです。

グループ数(またはその他の集計関数)を取得するには、groupby句を使用します。

select file_id, count(*)
  from data
 group by file_id
于 2012-04-08T16:08:18.163 に答える
4

GROUPBY..。

SELECT file_id, COUNT(*)
  FROM data
 GROUP BY file_id
于 2012-04-08T16:05:30.993 に答える
2
select file_id, count(*)
  from data
 group by file_id
于 2012-04-08T16:05:38.777 に答える