我有一个包含以下列的users
表
id INT PRIMARY
username
target
dead
target 包含同一表中另一个用户的 id。所有用户开始时 dead 为 0。如果 dead 为 1,则表示他们已经死了。随着时间的推移,dead 会发生变化,但 target 列将始终保持其开始位置。
如果用户死亡,他们的目标将成为杀死他们的新目标。因此,如果我试图找到用户 A 的当前目标,我必须首先找到他们的原始目标,如果该目标已死亡,则移动到该目标的目标,依此类推,直到我找到一个未死亡的目标。这将是用户 A 的当前目标。
目前我有这个查询,它只给了我原始目标
SELECT `a`.`username`, `a`.`dead`, `b`.`username`
FROM `users` AS `a` LEFT JOIN (`users` AS `b`)
ON (`a`.`target` = `b`.`id`)
但不知道如何添加到它来给我当前的目标。
最佳答案
通过“représentation intervallaire”可以更有效地使用递归,查看 http://sqlpro.developpez.com/cours/arborescence/ .
关于mysql - 在表中递归查找内容的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3904535/