作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个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
递归查询从表中的所有可用记录开始并爬上层次结构树,同时跟踪原始借款人
和树中的级别。然后,外部查询过滤每个子树中的最后一条记录。
borrower | lender-------: | -----: 1 | 4 2 | 4 3 | 4 6 | 5 7 | 5
关于MySql 贷款表,为每个借款人找到根贷款人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58922768/
我正在尝试编写一个 SQL 查询来根据以下公式计算 future 贷款余额: FV( future 余额)= CV(当前余额)- P(固定还款)+ I (利息资本化) 其中 **I = (CV * A
我是一名优秀的程序员,十分优秀!