比较mysql中同一表的两行的列

比较mysql中同一表的两行的列,mysql,Mysql,我有一个包含玩家历史记录的表名player\u history。在该表中,有列player\u id、Final\u position、meeting\u code、race\u no和towned\u time。如果一名球员站在第一或第二位置,时间将是相同的,有一天的会议代码,在每个会议代码中最多有10场比赛 我想选择那些第一和第二位置被击败时间不相同的记录 player_id Meeting_Code race_no final_position beaten_time 1

我有一个包含玩家历史记录的表名
player\u history
。在该表中,有列player\u id、Final\u position、meeting\u code、race\u no和towned\u 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 

另外,如果不正确,我只想更新第一个位置的记录

将表名设为
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.

像这样试试。它可能会工作。

检查此选项,它会工作的

SELECT *
FROM   table_name
GROUP BY player_id
HAVING count(beaten_time) = 1;
试试看:

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;

谢谢你的回答,但是这张桌子还有其他位置,还有20个位置。我只想检查位置1和2。我希望位置2上的时间和位置1上的时间相同。在这种情况下,在(1,2)中添加额外的where条件和t1.final_位置。请用上面的查询尝试此操作并检查它。它不起作用。如果不选择数据,这是否可能?我可以用秒更新所有第一位置时间。第一个位置的任何值都将被第二个位置的值所取代,该位置具有相同的会议代码和比赛规则。我不知道如何实现这一点。但是,在上面的查询中添加“Where t1.final_position IN(1,2)”之后,您得到了什么?它给出了错误的数据好的,没问题,我将为此编写一个小函数