mysql:9171
From: nisi <nisi <nisi@xxxxxxxxxx>>
Date: Mon, 12 Apr 2004 11:06:29 +0900
Subject: [mysql 09171] GROUP BY について
はじめまして、西川といいます。 早速ですが、group by を用いた検索を考えているのですが、 結果が思い通りにならず困っています。 mysql> select * From friends; +----+----------+----------+--------+ | id | 1st_name | 2nd_name | height | +----+----------+----------+--------+ | 1 | 田中 | 一郎 | 161 | | 2 | 山田 | 二郎 | 179 | | 3 | 田中 | 二郎 | 171 | | 4 | 佐藤 | 一郎 | 163 | | 5 | 高橋 | 三郎 | 185 | | 6 | 佐藤 | 三郎 | 183 | | 7 | 佐藤 | 二郎 | 173 | | 8 | 高橋 | 一郎 | 165 | | 9 | 田中 | 四郎 | 191 | | 10 | 佐藤 | 四郎 | 193 | | 11 | 鈴木 | 三郎 | 187 | | 12 | 高橋 | 二郎 | 175 | | 13 | 山田 | 一郎 | 169 | | 14 | 高橋 | 四郎 | 195 | | 15 | 鈴木 | 一郎 | 167 | | 16 | 鈴木 | 二郎 | 177 | | 17 | 田中 | 三郎 | 181 | | 18 | 山田 | 四郎 | 199 | | 19 | 鈴木 | 四郎 | 197 | | 20 | 山田 | 三郎 | 189 | +----+----------+----------+--------+ 上記データがあったとして、それぞれの家族の中で最も背の高い人を代表として、 対家族の順位を付けたいと思ったのですが下記のようなsql文ではうまくいきま せんでした。 mysql> select * From friends group by 1st_name order by height desc; +----+----------+----------+--------+ | id | 1st_name | 2nd_name | height | +----+----------+----------+--------+ | 11 | 鈴木 | 三郎 | 187 | | 5 | 高橋 | 三郎 | 185 | | 2 | 山田 | 二郎 | 179 | | 4 | 佐藤 | 一郎 | 163 | | 1 | 田中 | 一郎 | 161 | +----+----------+----------+--------+ group by をした時点でidの若いものが選ばれてしまうのですが、 これを任意に変えることは出来るのでしょうか? ちなみに欲しい結果は下記のような形です。 +----+----------+----------+--------+ | id | 1st_name | 2nd_name | height | +----+----------+----------+--------+ | 18 | 山田 | 四郎 | 199 | | 19 | 鈴木 | 四郎 | 197 | | 14 | 高橋 | 四郎 | 195 | | 10 | 佐藤 | 四郎 | 193 | | 9 | 田中 | 四郎 | 191 | +----+----------+----------+--------+ 初歩的な質問で申し訳ございませんが、何卒宜しくお願い致します。 (mysqlのversionは3.23.58です)
-> 9171 2004-04-12 11:06 [nisi <nisi@xxxxxxxxx] GROUP BY について 9172 2004-04-12 19:42 ┣[Shinya Kawaji <kawaj] 9173 2004-04-12 19:46 ┣["konet218@xxxxxxxxxx] 9178 2004-04-12 22:05 ┣["片寄白王" <katayose] 9230 2004-04-19 16:21 ┗[nisi <nisi@xxxxxxxxx]