[PHP-users 5323] Re: MySQL でのデータの検索結果

森 直也 php-users@php.gr.jp
Sat, 09 Feb 2002 18:57:07 +0900


>
> テーブル名:TEST
> +−−−−−−−+−−−−−−−−−+−−−−−−−−−−−−−−−−−−−−+
> |ID     |NAME     |URL                  |
> +−−−−−−−+−−−−−−−−−+−−−−−−−−−−−−−−−−−−−−+
> |000001 |あいうえお    |http://www.xxx.com/a|
> |000002 |あいうえお    |http://www.xxx.com/b|
> |000003 |かきくけこ    |http://www.xxx.com/c|
> |000004 |さしすせそ    |http://www.xxx.com/d|
> |000005 |たちつてと    |http://www.xxx.com/e|
> |000005 |さしすせそ    |http://www.xxx.com/f|
> +−−−−−−−+−−−−−−−−−+−−−−−−−−−−−−−−−−−−−−+
>
> からNAMEで重複するものを一つにして以下のように抽出したいのです。
> +−−−−−−−+−−−−−−−−−+−−−−−−−−−−−−−−−−−−−−+
> |ID     |NAME     |URL                  |
> +−−−−−−−+−−−−−−−−−+−−−−−−−−−−−−−−−−−−−−+
> |000001 |あいうえお    |http://www.xxx.com/a|
> |000003 |かきくけこ    |http://www.xxx.com/c|
> |000004 |さしすせそ    |http://www.xxx.com/d|
> |000005 |たちつてと    |http://www.xxx.com/e|
> +−−−−−−−+−−−−−−−−−−−−+−−−−−−−−−−−−−−−−−+

上記データでは、
Distinct でも Group by でも決して集約されて
抽出されることはありません。

IDとURLに集約できないデータがあるからです。
NAMEだけの条件で抽出対象を集約することは出来ません。

つまり、

--------------------------------------------------
SELECT name
  FROM test
 GROUP BY name;
これで name が集約されて出ます。

--------------------------------------------------
SELECT DISTINCT id,name,url
  FROM test;
これはid,name,urlの行単位で同じであれば集約されます。

--------------------------------------------------
SELECT id,name,url
  FORM test
 GROUP BY id,nam,url;
これはDistinctと同じ要求になります。

--------------------------------------------------
SELECT id,name,url
  FROM test
 GROUP BY name
これはSQLとして成り立ちません。

--------------------------------------------------

以上、私の見解です。
-- 
森 直也 <Naoya_Mori@ni.smm.co.jp>