MySQL为ID列表选择最后n行

时间:2013-07-30 13:26:22

标签: mysql

灯具

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

有什么想法吗?谢谢

1 个答案:

答案 0 :(得分: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 Example获得第三大值

子查询试图获取最后一次胜利的日期,然后获取团队所在的日期之后的所有日期。

编辑:

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

听起来更像是你的后一条评论