User Region Points Last_Updated 1 5 0 1-Nov-09 I want this row 2 1 5 30-Oct-09 3 1 2 02-Nov-09 2 2 7 02-Nov-09 and this row 3 2 5 02-Nov-09
使用mysql数据库,我想获取从区域X到区域Y的每个区域的所有积分领先者。如果积分相同,我想使用last_updated作为平局断路器。我找到了一种方法来做到这一点,但它涉及对同一个表进行多个查询并将它们连接在一起。我忍不住认为有更好的解决方案。任何想法。
最佳答案
这应该有效:
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
您基本上是在说,“给我所有在同一地区没有其他用户且拥有更多积分或具有稍后更新日期的相同积分的用户。”
关于sql - Mysql:查询以使用仲裁器查找具有最大值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1703244/