プロが教えるわが家の防犯対策術!

例えば、

Field_1Field_2Field_3Field_4
人事部第一課加藤10
営業部関東ブロック井上20
総務部A課手塚3
開発部ハード課大垣10
経理部1課松下12
資材部1課山田15
人事部第二課佐藤50
営業部関西ブロック下田15
総務部A課今西8
開発部ソフト課中村5
人事部第一課鈴木1
営業部関東ブロック高橋30

というテーブル(フィールドは所属部門、所属課、名前、ポイントとして下さい)があります。この中から、

人事部第一課鈴木1
営業部関西ブロック下田15
総務部A課手塚3
開発部ソフト課中村5
経理部1課松下12
資材部1課山田15

というように、各部署で最もポイントの値が小さな人の所属部門、所属課、名前、ポイントを取り出したいのですが、これを”一回の”SQL文で実現するにはどのように記述したらよいのでしょうか。

先ほどから質問してばかりで申し訳ありませんが、よろしくお願い致します。

A 回答 (1件)

MySQLのバージョンは?


バージョン5以降なら、サブクエリやビューが使えます
が、それより前ならば使えません。

バージョン5以降なら、以下でOKだと思います。

SELECT 所属部門,所属課,名前,ポイント
FROM 表
WHERE (所属部門,所属課,ポイント)
IN(SELECT 所属部門,所属課,MIN(ポイント)
FROM 表
GROUP BY 所属部門,所属課)

この回答への補足

すみません、バージョンは4.0.16です><

今、4.0系でやる為に、http://okwave.jp/kotaeru.php3?q=1462519
を参考にチャレンジしているのですが、結構大変です。。
ver5以降にした方がいいのでしょうか。。

4.0.16から5系へ変更した場合、注意すべき点などはあるのでしょうか。もし、5系で速度が落ちておらず、大きなバグなどもなければ、変更も検討したいと思います。

ご回答ありがとうございました。サブクエリ、という手段について学ぶ事が出来ました。

補足日時:2005/11/17 16:25
    • good
    • 0
この回答へのお礼

4.0.16系でもやりようによって、同様の結果を得る事が出来る事がわかりました。
しかし、今回は、2回のSQLに分け、かつHEAP型のテンポラリテーブルを使う事で、速度を稼ぐ事にしました。

5.0系でのサブクエリは非常に便利なようですので、後日、5.0系への移行を検討させて頂きたいと思います。

今回はありがとうございました。

お礼日時:2005/11/17 20:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す