gpt4 book ai didi

MySql 贷款表,为每个借款人找到根贷款人

转载 作者:行者123 更新时间:2023-11-29 03:15:24 24 4
gpt4 key购买 nike

我有一个Mysql表,如下所示:

BORROWER      Lender

1 2
2 3
3 4
4 NULL
5 NULL
6 7
7 5

我想为每个借款人获取根贷方。您可以将根贷方视为资金来源。因此,如果人“1”从人“2”那里借钱,而人“2”从人“3”那里借钱,那么对于人“1”来说,贷款来源(即根贷款人)是人“3”。下面显示的预期输出应该有助于更好地理解问题:

BORROWER      ROOT_LENDER

1 4
2 4
3 4
4 4
5 5
6 5
7 5

如您所见,不向任何人借款的借款人(LENDER 列中为 NULL)在输出中被视为向自己借款。

在我的例子中,这个借贷者层次结构可能非常大(超过 200k),我想递归可能不是一个好的方法,但欢迎任何建议。

最佳答案

如果您运行的是 MySQL 8.0,请考虑以下递归查询:

with recursive cte as (
select borrower original_borrower, borrower, lender, 0 lvl from mytable
union all
select c.original_borrower, t.borrower, t.lender, lvl + 1
from mytable t
inner join cte c on t.borrower = c.lender
)
select original_borrower borrower, lender
from cte c
where lvl = (
select max(lvl) - 1 from cte c1 where c1.original_borrower = c.original_borrower
)
order by original_borrower

递归查询从表中的所有可用记录开始并爬上层次结构树,同时跟踪原始借款人 和树中的级别。然后,外部查询过滤每个子树中的最后一条记录。

Demo on DB Fiddle :

borrower | lender-------: | -----:       1 |      4       2 |      4       3 |      4       6 |      5       7 |      5

关于MySql 贷款表,为每个借款人找到根贷款人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58922768/

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