1
我有兩張表,killlog和deathlog記錄來自在線遊戲的死亡和殺死信息。我想加入這兩張桌子來製作一個殺人板。Mysql在時間戳上使用時間差異
這是可能的,通過查看時間戳殺死和死亡記錄並加入每個殺死時間最接近的死亡。殺人和死亡之間的時間差異通常比較接近,但可以長達10分鐘。
我想在時間差異方面將每次殺死與CLOSEST死亡進行匹配,但是我只想將每次死亡與單次殺死相匹配。
目前,我有以下SQL語句
SELECT
distinct killlog.ID, deathlog.id, killlog.PlayerName, deathlog.PlayerName, killlog.Timestamp as killtime, deathlog.Timestamp as deathtime,
TIMEDIFF(killlog.Timestamp, deathlog.Timestamp)
FROM killlog
inner JOIN deathlog on
TIMEDIFF(killlog.Timestamp, deathlog.Timestamp) <= 600
GROUP by
killlog.id
這幾乎是給了我所需要的輸出,但是在某些情況下,我看到了死亡匹配多個殺死。例如:
+--------+---------+------------+------------+---------------------+---------------------+----------+
| killID | DeathID | KillerName | VictimName | killTime | deathTime | timeDiff |
+--------+---------+------------+------------+---------------------+---------------------+----------+
| 8 | 28 | DKmintz | Hanfkeks | 09/12/2013 21:30:23 | 09/12/2013 21:30:09 | 00:00:14 |
+--------+---------+------------+------------+---------------------+---------------------+----------+
| 9 | 28 | Sam Fisher | Hanfkeks | 09/12/2013 21:31:03 | 09/12/2013 21:30:09 | 00:00:54 |
+--------+---------+------------+------------+---------------------+---------------------+----------+
在這裏你可以看到與兩種不同的殺死相匹配的死亡。
我的問題是如何確保我只返回一次死亡,並且沒有加入多次死亡。
'SELECT 不同killlog.ID,deathlog.id,killlog.PlayerName,deathlog.PlayerName,killlog.Timestamp作爲消磨時間,如deathlog.Timestamp deathtime, TIMEDIFF(killlog.Timestamp,deathlog.Timestamp) FROM killlog INNER JOIN deathlog上 TIMEDIFF(killlog.Timestamp,deathlog.Timestamp)<= 600 通過 TIMEDIFF分區(killlog.Timestamp,deathlog.Timestamp)<= 600' 這導致SQL錯誤,我找不到有關「分區依據」的很多信息,以供MySQL查看問題在於。 – user2976138