2017-07-06 21 views
0

私はテーブル名がplayer_historyで、プレーヤーの履歴が入っています。このテーブルでは、player_id列、Final_position、meeting_code、race_noおよびbeaten_time列を有する。プレーヤーが第1位または第2位に立っていた場合、1日に会議コードがあり、各会議コードには最大10回のレースが存在します。mysqlの同じテーブルの2列の比較列

第1位と第2位の殴打時間が同じでないレコードを選択します。

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

テーブル名を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; 
+0

おかげが、テーブルには、私が唯一の位置1及び2にチェックしたい20まで同様に他のポジションを持っています。私はポジション2にある同じ時刻がポジション1になるようにしたい。 – mks

+0

この場合、t1.final_position IN(1,2)を使用して条件を追加する。上記のクエリでこれを試してみてください。 – subro

+0

動作していません。これは、データを選択することなく可能ですか?すべての1位の時間を秒で更新できます。 第1位の値は、同じ会議コードとrace_noを持つ第2位の値に置き換えられます。 – mks

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; 
0

はそれを試していきます

関連する問題