需要您的帮助。我想/希望有这样的功能。我发现";CONNECT DBY";以及";使用递归AS"但这似乎并不能解决我的问题。
给定表格:
表A
+------+------------+----------+
| id | prev_id | date |
+------------------------------+
| 1 | | 20200101 |
| 23 | 1 | 20200104 |
| 34 | 23 | 20200112 |
| 41 | 34 | 20200130 |
+------------------------------+
表B
+------+-----------+
| ref_id | key |
+------------------+
| 41 | abc |
+------------------+
(总是指向表"A"中的最新条目。更新,无历史记录(
加入声明:
选择id,prev_id,密钥,日期来自B.ref_id=A.id 上的左外JOIN B
GIVEN psql结果集:
+------+------------+----------+-----------+
| id | prev_id | key | date |
+------------------------------+-----------+
| 1 | | | 20200101 |
| 23 | 1 | | 20200104 |
| 34 | 23 | | 20200112 |
| 41 | 34 | abc | 20200130 |
+------------------------------+-----------+
期望输出:
+------+------------+----------+-----------+
| id | prev_id | key | date |
+------------------------------+-----------+
| 1 | | abc | 20200101 |
| 23 | 1 | abc | 20200104 |
| 34 | 23 | abc | 20200112 |
| 41 | 34 | abc | 20200130 |
+------------------------------+-----------+
结果集的行由列"id"one_answers"prev_id"连接。我想计算";键";列。请记住,这是一个非常简单的例子。通常有更多的行和不同的密钥以及id的
我知道您希望在tableb
中引入每一行的层次结构。这里有一种使用递归查询的方法:
with recursive cte as (
select a.id, a.prev_id, a.date, b.key
from tablea a
inner join tableb b on b.ref_id = a.id
union all
select a.id, a.prev_id, a.date, c.key
from cte c
inner join tablea a on a.id = c.prev_id
)
select * from cte