1

夹具

uid home_uid away_uid winner date       season_division_uid
1   26       6        6      2013-07-30 18
2   8        21       8      2013-06-30 18
3   6        8        8      2013-06-29 18
4   21       26       21     2013-05-20 18
5   6        26       6      2013-04-19 18

该表包含数百行。

目前我有一个查询要选择一个部门中的所有团队,即

SELECT team_uid 
FROM Season_Division_Team 
WHERE season_division_uid='18'
  • 其中列出了团队 uid 的行,即 [6,26,8,21,26]。

现在,对于每个唯一的团队 id,我想返回最后 3 个获胜者值,按日期列排序,他们参与(可能是 away_uid 或 home_uid)。

所以返回值示例将是:

team_id winner date
6       6      2013-07-30
6       8      2013-06-29
6       26     2013-04-19
26      6      2013-07-30
26      21     2013-05-20
26      6      2013-04-19

有任何想法吗?谢谢

4

1 回答 1

0

我不知道如何直接得到它,像这样的查询

select * from Season_division_Team  where 
`date >= (select min(`date`) from 
(select `date` from season_division_team order by date desc limit 3)) 
 and (home_uid = 6 or away_uid = 6)

那不会是一个很好的查询。但目前我能想到的唯一方法

很难从 SQL示例中获得第三大值

子查询试图获取最后一场胜利发生的日期,然后获取球队比赛之后的所有日期。

编辑:

SELECT * FROM Season_Division_Team WHERE winner = 6 ORDER BY `date` DESC LIMIT 3

这听起来更像你的后评论

于 2013-07-30T13:39:14.200 回答