mysql - 在表中递归查找内容的最有效方法?

标签 mysql

我有一个包含以下列的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/

相关文章:

mysql - 获取一行中 2 行值的结果

php - MySQL - 按总时间排序结果

php - 在 PHP 中使用变量输出 MySQL 列值

php - PHP 和 MySQL 中的高级统计

php - 我应该在 Windows Server 2008 Enterprise 上安装 xampp 吗

php - mysql 和 php : querying the db vs. 阅读全文

php - 在此AJAX/PHP MySQL搜索字段上添加速率限制

mysql - to_date 字符类型日期的替代方案

php - sql 计算来自特定字段的唯一值

mysql - 如何提高MySQL子查询性能