我有一个表users
,其中包含以下列
id INT PRIMARY
username
target
dead
target包含同一个表中另一个用户的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`)
但不知道如何添加它以给我当前的目标。
答案 0 :(得分:0)
使用“représentationselaylaire”更有效地使用递归,看看http://sqlpro.developpez.com/cours/arborescence/。