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

试试这个

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

在这里演示

输出:

    P | V
    1 | 2
    2 | 22
于 2013-05-22T18:58:48.397 回答