mysql获取最新记录检查两列

a1o7rhls  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(428)

这个问题在这里已经有答案了

mysql:选择前n个最大值(3个答案)
sql仅选择列上具有最大值的行[重复](27个答案)
两年前关门了。
我有这样的结果

我需要得到每个骑师的最新比赛(首先得到比赛的最大日期,然后是最大比赛号码)。结果应该是这样的:

注意:数据库非常庞大。查询应该很快。

mlnl4t2r

mlnl4t2r1#

我相信,你在寻找:

SELECT Jockey,MAX(DATE),MAX(RACE) FROM myTable  GROUP BY Jockey
n3ipq98p

n3ipq98p2#

当你说“最大比赛号码”时,你指的是最近比赛的号码(最近日期的比赛),还是最高的号码?
假设您指的是前者,并为您的表命名为“races”:

SELECT 
    Race.*
FROM 
    (
        SELECT Jockey, MAX(Date) as MaxDate 
        FROM Races GROUP BY Jockey
    ) MaxRaceDate 
    inner join (
        SELECT Jockey, Date, MAX(Race) as MaxRace
        FROM Races 
        GROUP BY Jockey, Date
    ) MaxRaceForDate 
        on MaxRateDate.Jockey = MaxRaceForDate.Jockey
            and MaxRateDate.MaxDate = MaxRaceForDate.Date
    inner join Race
        on Race.Jockey=MaxRace.Jockey 
            and Race.Date = MaxRace.MaxDate
            and Race.Race = MaxRaceForDate.MaxRace

这个查询越来越长,所以我可能有错误,但应该大致正确。;)
基本上,您需要对表进行聚合查询以查找日期,然后再进行另一个聚合查询以获取日期的最大速率,最后是表本身以获取信息。然后需要将它们与子查询或联接放在一起,联接通常要快得多,所以我就这样做了。

相关问题