我有一个表users
,其中包含以下列
id INT PRIMARY
username
target
dead
target包含同一表中另一个用户的id。所有用户开始时都是0。如果dead是1,那就意味着他们已经死了。随着时间的推移,死亡可能会改变,但目标列将始终停留在它开始的位置。
如果用户死了,他们的目标就成为杀死他们的人的新目标。因此,如果我试图找到用户A的当前目标,我必须首先找到他们的原始目标,如果该目标已死,则转移到该目标的目标,以此类推,直到我找到一个未死的目标。这将是用户A的当前目标。
目前,我有一个查询,它只给出了最初的目标
SELECT `a`.`username`, `a`.`dead`, `b`.`username`
FROM `users` AS `a` LEFT JOIN (`users` AS `b`)
ON (`a`.`target` = `b`.`id`)
但不知道如何添加才能得到当前的目标。
发布于 2010-10-11 08:21:53
递归性在"représentation intervallaire“中更有效地使用,请在http://sqlpro.developpez.com/cours/arborescence/上查看。
https://stackoverflow.com/questions/3904535
复制相似问题