質問: mysqlのSQLについてお聞きします。 studentというテーブルがあります。 クラス,名前,身長,体重 ----------------------- 1組,太郎,180,72 1組,次郎,180,71 1組,サブ,170,80 2組,かおる,181,73 2組,はじめ,181,72 2組,みなみ,171,81 各クラスの一番大きな生徒を抽出したいと考えています。 大きなの定義は、「身長が高い。身長が同じの場合には、身長に加え体重が重い生徒。」です。 上記の例の場合は、下記の2行となります。 1組,太郎,180,72 2組,かおる,181,73 よろしくお願いいたします。
回答: 方法は1つではありませんが、身長と体重を1つに結合することによって判別式を簡単にした例を作ってみました 体重が999kgを超える場合は千倍ではなく万倍してください 身長を小数点以下まで数えている場合も適宜倍数を変えてください ``` SELECT a.* FROM student a WHERE NOT EXISTS(SELECT * FROM student b WHERE (b.クラス = a.クラス) AND (b.身長 * 1000 + b.体重 > a.身長 * 1000 + a.体重)) ORDER BY a.クラス; ``` http://dev.mysql.com/doc/refman/5.1-olh/ja/exists-and-not-exists...