お世話になっております。kawaと申します。
SQL文の組み立てで困っております。ご教示、お願い致します。
【内容】
グループ化した情報のTOP10を取得するSQL文を作成したい。
下記の情報が、DBに登録されているとします。その場合、(名称1+名称2)のグループの中で、データが一番、高い方(1が一番高い)から10レコード抜出す。
名称1 名称2 名称3 データ(順位)
A A1 A1-1 1
A A1 A1-2 2
A A1 A1-3 3
A A1 A1-4 4
A A1 A1-5 5
A A1 A1-6 6
A A1 A1-7 7
A A1 A1-8 8
A A1 A1-9 9
A A1 A1-10 10
A A1 A1-11 11
A A1 A1-12 12
A A2 A2-1 1
A A2 A2-2 2
B B1 B1-1 1
B B1 B1-2 2
B B1 B1-3 3
B B2 B2-1 4
B B2 B2-1 5
SQL文を実行すると、下記の様な情報を取得したいと思っております。
名称1 名称2 名称3 データ
A A1 A1-1 1
A A1 A1-2 2
A A1 A1-3 3
A A1 A1-4 4
A A1 A1-5 5
A A1 A1-6 6
A A1 A1-7 7
A A1 A1-8 8
A A1 A1-9 9
A A1 A1-10 10
A A2 A2-1 1
A A2 A2-2 2
B B1 B1-1 1
B B1 B1-2 2
B B1 B1-3 3
B B2 B2-1 4
B B2 B2-1 5
※:下記の情報は、TOP10以下の情報なので、切り捨てたい。
A A1 A1-11 11
A A1 A1-12 12
【テーブル構成】
テーブル名 =info
項目 =
名称1 Varchar
名称2 Varchar
名称3 Varchar
データ int
【自分で作成してみた結果】
解らないなりにも、自分で作成してみました。しかし、結果は、思惑の通りには行きませんでした。
>select * top 10 from info group by 名称1,名称2 order by データ;
【mySQL】
4.0.26
以上、宜しくお願い致します。