我有一个包含玩家历史的表名player_history
。在此表中有列player_id,Final_position,meeting_code,race_no和beaten_time。如果一名球员站在第一或第二位置,时间将是相同的,会议代码有一天,每次会议代码最多有10场比赛。
我想选择那些第一和第二位置时间不相同的记录。
player_id Meeting_Code race_no final_position beaten_time
1 0001 1 1 2
2 0001 1 2 2
1 0001 2 1 5
2 0001 2 2 6
... so on
输出应为:
player_id Meeting_Code race_no final_position beaten_time
1 0001 2 1 5
2 0001 2 2 6
此外,如果不正确,我只想更新第一个位置的记录。
答案 0 :(得分:0)
让表名为Test
。尝试自我加入或类似的东西:
Select t1.player_id t1.Meeting_Code t1.race_no t1.final_position t1.beaten_time
From Test t1
LEFT JOIN Test t2 ON t1.beaten_time != t2.beaten_time.
试试这样。它可能会奏效。
答案 1 :(得分:0)
检查一下它是否可行
SELECT *
FROM table_name
GROUP BY player_id
HAVING count(beaten_time) = 1;
答案 2 :(得分:0)
试一试:
select b.player_id,b.meeting_code,b.race_no,b.final_position,b.beaten_time
from player_history a,player_history b
where a.race_no = b.race_no and a.beaten_time != b.beaten_time;