COUNT()
は、通常GROUP BY
と組み合わされる集計関数です。 条項。
curdate()
現在の日付を出力する日付関数です。
(私が知る限り)MySQLだけがGROUP BY
を使用せずにこの構文を許可します 句。提供しなかったため、COUNT(*)
テーブル内の行の総数とowner
をカウントします 列はランダムに選択されます/オプティマイザーのデフォルト/インデックスによって。
これはあなたの質問です:
select owner, count(*)
from pet
group by owner;
これは、オプティマイザーに各の合計行をカウントするように指示します 所有者。
group by句が言及されていない場合、集計関数はテーブルのデータ全体に適用されます。
編集: 各行に適用されるカウントは、通常、COUNT()
では実行できません。 通常、分析関数で使用されます-> COUNT() OVER(PARTITION...)
残念ながら、これはMySQLには存在しません。もう1つのオプションは、JOIN/CORRELATED QUERY
を作成することです。 この追加の列について。
別の編集: 各所有者の横にある合計数を知りたい場合は、サブクエリを使用できます:
SELECT owner,
(SELECT COUNT(*) FROM pet) as cnt
FROM pet