0

私はシナリオを持っています:

POSITION と各位置に関連付けられた値を含むテーブルですが、同じ位置に対して常に 4 つの値があるため、テーブルの例は次のとおりです。

position | x| values 
1 | x1 | 0
1 | x2 | 1
1 | x3 | 1.4
1 | x4 | 2
2 | x1 | 3
2 | x2 | 10
2 | x3 | 12.4
2 | x4 | 22

一意の位置値ごとに MAX 値を返すクエリが必要です。今、私はそれを照会しています:

SELECT DISTINCT (position) AS p, (SELECT MAX(values) AS v FROM MYTABLE  WHERE position = p) FROM MYTABLE;

セットで 1651 行 (39.93 秒) かかりました。1651 行は、このデータベースの単なるテストです (おそらく 1651 行以上あるはずです。

私は何を間違っていますか?より速い方法でそれを取得するより良い方法はありますか?

どんな助けでも大歓迎です。乾杯。、

4

3 に答える 3

6

GroupBy 句を使用します。

SELECT Position, MAX(VALUES) FROM TableName
GROUP BY Position

また、ドキュメント (groupby について) も参照してください: http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

于 2013-05-22T18:57:29.907 に答える
1

GROUP BY次の句を使用してみてください。

SELECT position AS p, MAX(values) AS v
FROM MYTABLE
GROUP BY p;
于 2013-05-22T18:58:12.987 に答える
1

try this

 SELECT position AS p, MAX(`values`) AS v FROM MYTABLE 
 GROUP BY position 

DEMO HERE

OUTPUT:

    P | V
    1 | 2
    2 | 22
于 2013-05-22T18:58:48.397 に答える