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