来自加入的MySQL表的最新独特记录

时间:2014-01-12 16:06:36

标签: mysql distinct

我有两张桌子,一张比赛结果列表,一张有ELO评分(基于之前的比赛)。 获取任意竞争的竞争者名单是微不足道的,但我还需要获得最新的评级价值。

得分:

id | eventid | competitorid | position
1    1         1              1
2    1         2              2
3    1         3              3
4    2         2              1
5    2         3              2
6    3         1              1
7    3         3              2
8    3         2              3

的评价:

id | competitorid | rating
1    1              1600
2    2              1500
3    3              1500
4    2              1600
5    3              1590

针对score.eventid = 3的查询的预期输出将是

id | competitorid | position | rating
6    1              1          1600
7    3              2          1590
8    2              3          1600

目前我的代码如下:

SELECT score.scoreID, score.competitorID, score.position,
rating.id, rating.rating
FROM score, rating
WHERE score.competitorid = rating.competitorid
AND score.eventid = 3
ORDER BY score.position

,输出

id | competitorid | position | rating.id | rating
6    1              1          1          1600
7    3              2          2          1500
7    3              2          4          1590
8    2              3          3          1500
8    2              3          5          1600

基本上它显示了该正确事件的得分表中的数据,但是对于该竞争对手的每个可用评级给我一行,遗憾的是我不知道在DISTINCT语句中构建的位置或者如何将其限制为最近的结果

MySQL noob,管理DISTINCT语句,但没有连接。不幸的是,大多数先前的问题似乎都涉及从单个表中获得不同的结果,这不是我所追求的。谢谢!

1 个答案:

答案 0 :(得分:1)

获得评级的一种方法是使用相关子查询:

SELECT s.scoreID, s.eventID, s.competitorID, s.position,
       (select r.rating
        from rating r
        where s.competitorID = r.competitorID
        order by r.id desc
        limit 1
       ) as rating
FROM score s
WHERE s.eventID = 3
ORDER BY s.position;

我不确定ratingprid是什么,所以这只包括评级。