我有这个场景:
一个带有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
Run Code Online (Sandbox Code Playgroud)
我需要一个查询,它返回每个唯一位置值的MAX值.现在,我正在查询它:
SELECT DISTINCT (position) AS p, (SELECT MAX(values) AS v FROM MYTABLE WHERE position = p) FROM MYTABLE;
Run Code Online (Sandbox Code Playgroud)
我花了1651行(39.93秒),1651行只是对这个数据库的测试(它可能应该有超过1651行.
我究竟做错了什么 ?有没有更好的方法来更快地获得它?
任何帮助表示赞赏.干杯.,
使用GroupBy-Clause:
SELECT Position, MAX(VALUES) FROM TableName
GROUP BY Position
Run Code Online (Sandbox Code Playgroud)
另外,看看文档(关于groupby):http: //dev.mysql.com/doc/refman/5.0/en/group-by-functions.html