没有为某人获取重复记录

时间:2014-08-09 10:41:00

标签: php mysql

我有一张赛事记录表,其中保留了比赛记录。当某人完成比赛时,无论结束时间或位置是什么,记录都会被插入到桌子中。我想获得前5名最佳赛手,而不是前5名最佳赛手。

请帮我解决SQL查询问题。顺便说一句,列是id,holder,rec_time,time,position

2 个答案:

答案 0 :(得分:0)

<强>被修改

根据新信息,我可以尝试另一种方法:

  • 首先,您需要知道每个持有人的最佳时间

    SELECT id, holder, min(race_time) FROM race_time GROUP BY holder;

  • 因为你只需要前五名,所以我们就把这个约束:

    SELECT id, holder, min(race_time) FROM race_time GROUP BY holder ORDER BY min(race_time) ASC, time ASC LIMIT 5

  • 一旦你有了这个,你只需要 id 字段,所以:

    SELECT id FROM race_time GROUP BY holder ORDER BY min(race_time) ASC, time ASC LIMIT 5;

  • 最后,您可以获得每一栏:

    SELECT * FROM race_time WHERE id IN (SELECT id FROM race_time GROUP BY holder ORDER BY min(race_time) ASC, time ASC LIMIT 5);

根据您为最佳持有人提供的(更新)定义,这应该为您提供前5个不同的持有者。

<强>之前

我在这里留下了之前的答案,因为如果没有它,评论将是胡说八道

假设比赛是表名,而位置在比赛中第一名是1,第二名是2,等等,这里有。

SELECT * FROM race ORDER BY position LIMIT 5;

这是一个非常基本的查询,您应该去做一些SQL tutorial

答案 1 :(得分:0)

你没有说明赛车手何时是最好的&#39;。当您将其定义为具有最佳平均位置的赛车时,您的查询将变为:

SELECT holder, AVG(position) AS average_position 
FROM race 
GROUP BY holder
ORDER BY AVG(position) ASC
LIMIT 5