Mysql:查询以使用决胜局查找最大行

Cod*_*ezy 2 mysql sql

用户区域点 Last_Updated        
1 5 0 1-Nov-09 我想要这一行
2 1 5 09 年 10 月 30 日        
3 1 2 09 年 11 月 2 日        
2 2 7 02-Nov-09 和这一行
3 2 5 09 年 11 月 2 日        

使用 mysql 数据库,我想获取从区域 X 到区域 Y 的每个区域的所有点领导者。如果点是平局,我想使用 last_updated 作为决胜局。我想出了一种方法来做到这一点,但它涉及同一个表上的几个查询并将它们连接在一起。我不禁认为有一个更好的解决方案。有任何想法吗。

Tom*_*m H 5

这应该有效:

SELECT
     T1.User
FROM
     MyUnnamedTable T1
LEFT OUTER JOIN MyUnnamedTable T2 ON
     T2.Region = T1.Region AND
     (
          T2.Points > T1.Points OR
          (T2.Points = T1.Points AND T2.Last_Updated > T1.Last_Updated)
     )
WHERE
     T2.User IS NULL AND
     T1.Region BETWEEN x AND y
Run Code Online (Sandbox Code Playgroud)

您基本上是在说,“给我所有在同一地区没有其他用户并且拥有更多积分或相同积分但更新日期较晚的用户。”