我有一个表users
有以下的列在表格中递归地找到某些东西的最有效方法?
id INT PRIMARY
username
target
dead
目标包含在同一个表的另一个用户的ID。所有用户的死亡开始为0.如果死亡是1,那么这意味着他们已经死亡。随着时间的推移,死亡人数可能会发生变化,但是目标专栏将始终保持不变。
如果一个用户死了,他们的目标变成杀死他们新目标的人。因此,如果我试图找到用户A的当前目标,我必须首先找到他们的原始目标,并且如果该目标已经死亡,移动到目标的目标上,等等,直到找到一个没有死亡的目标为止。这将是用户A.
的当前目标目前我有此查询只是给了我原来的目标
SELECT `a`.`username`, `a`.`dead`, `b`.`username`
FROM `users` AS `a` LEFT JOIN (`users` AS `b`)
ON (`a`.`target` = `b`.`id`)
,但不知道如何增加它给我当前的目标。
有趣的问题 - 在mySQL中可能很难做到。你从中得到什么语言/平台? – 2010-10-11 08:20:06
PHP。我知道我可以添加另一列'current_target'并在每次有人死亡时更新它。但是我想知道是否可以不使用一个查询。 – fent 2010-10-11 08:21:21