Mysql で重複の値を取り除いて件数をカウントしてくれる「COUNT DISTINCT」のメモ。
COUNT DISTINCT
サンプルとしてMysql公式のサンプルのworldDBで使用しております。
mysql> SELECT * FROM `city`; +----+----------------+--------------+---------------+------------+ | ID | Name | CountryCode | District | Population | +----+----------------+--------------+---------------+------------+ | 1 | Kabul | AFG | Kabol | 1780000 | | 2 | Qandahar | AFG | Qandahar | 237500 | | 3 | Herat | AFG | Herat | 186800 | | 4 | Mazar-e-Sharif | AFG | Balkh | 127800 | | 5 | Amsterdam | NLD | Noord-Holland | 731200 | ……… …… … . +----+----------------+--------------+---------------+------------+
実際は4,079行入っています。
mysql> SELECT COUNT(*) AS COUNT FROM `city`; +-------+ | COUNT | +-------+ | 4079 | +-------+
city のテーブルに何件 CountryCode が入っているか検索するためにサブクエリを使用することになります。
mysql> SELECT COUNT(*) AS COUNT FROM (SELECT DISTINCT CountryCode FROM `city`) temp; +-------+ | COUNT | +-------+ | 232 | +-------+
COUNT DISTINCTを使用すると以下のように簡単に出来ます。
mysql> SELECT COUNT(DISTINCT CountryCode) AS COUNT FROM `city`; +-------+ | COUNT | +-------+ | 232 | +-------+
これでサブクエリを使用することなく重複している行の件数を出力することが出来ます。
0 件のコメント :
コメントを投稿