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 の例から 3 番目に大きい値を取得するのは難しい

サブクエリは、最後の勝利が発生した日付を取得しようとしており、その後、チームがプレーしたすべての日付を取得しています。

編集:

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

それはあなたの後者のコメントのように聞こえます

于 2013-07-30T13:39:14.200 に答える