2016-01-20 40 views
-3

我有一个挑战表和一个用户表,并且我想返回每个用户针对特定挑战的最短时间(我正在构建最快时间的排行榜)在mysql排行榜中为用户返回最快时间

所以,我有:

user_id, username 
1, rita 
2, sue 
3, bob 

challenge_id, user_id, time 
1, 1, 10 
1, 1, 20 
2, 1, 5 
1, 2, 5 
1, 3, 30 
1, 3, 50 

而且我想MySQL的返回结果挑战1:

sue, 5 
rita, 10 
bob, 30 

我一直在摸索周围有这个问题,我觉得这几乎是正确的,但它在ly返回单个结果,而不是全套:

SELECT u.user_id, username, ac.quickest_time AS intScore 
FROM users u 
JOIN 
(
    SELECT user_id, MIN(time_taken) AS quickest_time 
    FROM accepted_challenges 
    WHERE 
    challenges_id = 1 
) ac ON ac.user_id = u.user_id 

任何想法?

+3

**这是不是一个编码服务**你尝试过什么,到目前为止,它有什么问题!? –

回答

1

尝试类似:

SELECT username, MIN(time) 
FROM MyTable1 m1 INNER JOIN MyTable2 m2 
ON m1.user_id = m2.user_id 
WHERE m2.challenge_id = 1 
GROUP BY username 
+0

Whhooa,我走了!干杯。 – ojsglobal