[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 メーリングリストの案内