我有这样的情景:
具有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行。
我做错了什么?有没有更好的方法来更快地获得它?
感谢任何帮助。 欢呼声。,
答案 0 :(得分:6)
使用GroupBy-Clause:
SELECT Position, MAX(VALUES) FROM TableName
GROUP BY Position
另外,看一下文档(关于groupby): http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
答案 1 :(得分:1)
尝试使用GROUP BY
子句:
SELECT position AS p, MAX(values) AS v
FROM MYTABLE
GROUP BY p;
答案 2 :(得分:1)
试试这个
SELECT position AS p, MAX(`values`) AS v FROM MYTABLE
GROUP BY position
输出:
P | V
1 | 2
2 | 22