2017-07-06 13 views
0

Ich habe einen Tabellennamen player_history mit Geschichte des Spielers. in dieser Tabelle mit Spalte player_id, Final_position, meeting_code, race_no und beatile_time. Wenn ein Spieler eine erste oder zweite Position eingenommen hat, ist die Zeit gleich, es gibt einen Meeting-Code für einen Tag und in jedem Meeting-Code gibt es maximal 10 Rennen.vergleichen Spalte von zwei Zeilen der gleichen Tabelle in mysql

Ich möchte diejenigen Datensätze auswählen, wo erste und zweite Position geschlagene Zeit nicht gleich sind.

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 

Ausgang sollte sein:

player_id Meeting_Code race_no final_position beaten_time 
    1   0001   2   1    5 
    2   0001   2   2    6 

Auch wenn es nicht richtig ist, ich will nur Aufzeichnungen ersten Position aktualisieren.

Antwort

0

Lassen Sie den Namen der Tabelle Test sein. Versuchen Sie, Self Join oder etwas in der Art zu setzen:

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. 

Versuchen Sie wie folgt. Es könnte funktionieren. diese

+0

Dank für Ihre Antwort, aber die Tabelle andere Positionen als auch bis 20 hat i nur auf Position 1 und 2 überprüfen möchten. Ich möchte gleichzeitig, dass auf Position 2 wird auf Position 1 sein. – mks

+0

In diesem Fall fügen Sie hinzu, wo Bedingung mit t1.final_position IN (1,2). versuche das mit der obigen Abfrage und überprüfe es bitte. – subro

+0

Es funktioniert nicht. Ist dies möglich, ohne Daten auszuwählen, kann ich alle 1. Positionszeit mit Sekunde aktualisieren. Welcher Wert in der ersten Position wird durch den Wert der zweiten Position mit demselben Meeting-Code ersetzt und race_no – mks

0

prüfen wird es funktionieren

SELECT * 
FROM table_name 
GROUP BY player_id 
HAVING count(beaten_time) = 1; 
0

ausprobieren:

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; 
Verwandte Themen