【发布时间】:2013-12-10 10:17:45
【问题描述】:
我有两张表,killlog 和 deathlog 记录在线游戏的死亡和击杀信息。我想加入这两个表以制作杀戮板。
这可以通过查看杀死和死亡记录的时间戳并根据每次杀死的时间加入最近的死亡来实现。杀戮和死亡之间的时间差通常比较接近,但可以达到 10 分钟。
我想在时差方面将每个杀戮与最近的死亡相匹配,但是我只想将每个死亡与单个杀戮相匹配。
目前我有以下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 |
+--------+---------+------------+------------+---------------------+---------------------+----------+
在这里,您可以看到相同的死亡与两个不同的杀戮相匹配。
我的问题是如何确保我只将每个死亡归还一次,并且不会将同一个死亡加入到多次杀戮中。
【问题讨论】: