gpt4 book ai didi

mysql - 如何在 MySQL 中检索节点的子节点和孙节点?

转载 作者:行者123 更新时间:2023-11-30 00:51:30 25 4
gpt4 key购买 nike

我有一个 MySQL 数据库,其中包含以下 2 个表:

节点:id(这只是为了举例,实际上还有更多字段)。

边缘:来源target 是 2 个节点的 id,weight 表示连接强度。

我想根据连接强度获取某个节点 ID 的前 20 个子节点,并为其每个子节点获取其各自的前 20 个子节点(意味着总共最多 400 个节点行)。

我已经研究过这个问题,我知道最合适的方法可能是使用递归过程(因为函数不能在 MySQL 中递归调用),但由于 MySQL 不支持表变量,我不得不寻找其他方法临时表。

毕竟我仍然不知道我到底要如何做到这一点,将不胜感激任何形式的帮助。

最佳答案

您需要为此编写 2 个查询..

第一个查询是..

CREATE TEMPORARY TABLE temp_table AS 
SELECT
eChild.*
FROM
Edge eParent
INNER JOIN
Edge eChild
ON ( eParent.target = eChild.source )
WHERE eParent.source = <X>
ORDER BY eParent.weight DESC
LIMIT 20

现在,需要对 temp_table 中的每个结果执行第二个查询。

SELECT 
eChild.*
FROM
temp_table eParent
INNER JOIN
temp_table eChild
ON ( eParent.target = eChild.source )
WHERE eParent.source = <Y>
ORDER BY eParent.weight DESC
LIMIT 20

您也可以尝试使用存储过程实现相同的逻辑;

关于mysql - 如何在 MySQL 中检索节点的子节点和孙节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20934176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com