[PHP-users 19238]Re: 基本的なSQL

takuya koide ml @ koid.net
2003年 12月 6日 (土) 06:38:45 JST


小出です。

On Sat, 6 Dec 2003 01:46:10 +0900
"kokolo" <kokolo @ hm7.aitai.ne.jp> wrote:

> MYSQL4.0とPHP4.3.3で開発しています。
> 
> MYSQLのテーブルにこのようなテーブルがあります。
> ID   | DATA1 | ID2 | NUMBER_DATA |
> ===================================
> 1    | TEST1 |     1|                    10|
> 2    | TEST1 |     1|                    30|
> 3    | TEST1 |     2|                    50|
> 4    | TEST1 |     2|                    20|
> 5    | TEST1 |     3|                     5|
> 6    | TEST1 |     3|                    10|
> 
> このようなデータでID2ごとにグループ化して
> さらにその中でNUMBER_DATAの最大ものの
> ID、DATA1を抽出したいです。
> ですので、結果として、
> 2    | TEST1 |     1|                    30|
> 3    | TEST1 |     2|                    50|
> 6    | TEST1 |     3|                    10|
> を抽出するSQL文を考えているのですが、

元のテーブル名をtestとすると以下のような感じでどうでしょう?

SELECT t2.id,t2.data2,t1.data2,t1.max 
FROM test AS t2,
  (SELECT data2,max(number_data)
   FROM test AS t2 GROUP BY data2) AS t1
WHERE(t1.data2,t1.max) = (t2.data2,t2.number_data);

 id | data2 | data2 |max
----+-------+-------+-----
  2 |     1 |     1 |  30
  3 |     2 |     2 |  50
  6 |     3 |     3 |  10
(3 rows)



--
koid


PHP-users メーリングリストの案内