2016-03-03 53 views
0
| id | user | team | month | result | 
|----|-------|--------|-------|--------| 
| 1 | Joe | red | sept | 100 | 
| 2 | Joe | red | oct | 40  | 
| 3 | Jim | red | sept | 70  | 
| 4 | Jim | red | oct | 50  | 
| 5 | Susy | red | sept | 40  | 
| 6 | Tim | blue | sept | 60  | 
| 7 | Tim | blue | oct | 100 | 
| 8 | Betty | blue | sept | 70  | 
| 9 | Dave | blue | sept | 20  | 
| 10 | Stan | green | oct | 40  | 
| 11 | Alan | green | sept | 80  | 
| 12 | Tina | green | oct | 100 | 
| 13 | Tina | green | sept | 30  | 
| 14 | Rick | yellow | oct | 50  | 
| 15 | Ellen | yellow | oct | 60  | 

这是可能的。每个团队最多可以有2名用户获得最大成绩MYSQL

我需要为每个团队最多2位用户提供最大的结果。

如下面的结果是从每队2名球员得分最高:

| 1 | Joe | red | sept | 100 | 
| 3 | Jim | red | sept | 70  | 
| 7 | Tim | blue | oct | 100 | 
| 8 | Betty | blue | sept | 70  | 
| 12 | Tina | green | oct | 100 | 
| 11 | Alan | green | sept | 80  | 
| 15 | Ellen | yellow | oct | 60  | 
| 14 | Rick | yellow | oct | 50  | 

,或者被多次查询做到这一点的唯一途径?

+0

'达2'?你的意思是因为一支球队可能只有一个结果? – Strawberry

+0

是的,一个团队可能只有一个成员 – John

回答

2

你可以尝试以下方法:

select t.* 
from `tbl` t 
where (select count(*) 
     from `tbl` 
     where `team` = t.`team` and `result` >= t.`result`) < 3 

SQLFiddle

3

你可以这样说:

SELECT * FROM 
    (SELECT t.id,t.team,count(*) as rnk 
    FROM YourTable t 
    INNER JOIN YourTable s 
    ON(t.id = s.id and t.team = s.team and t.result >= s.result))x 
WHERE rnk <= 2 
+1

感谢编辑@Mihai – Yossi

相关问题