我有一个sql表,其中的“行”表示链表的元素。例如,我可以有以下记录:
(id, previous_id)
------------------
(1, NULL)
(2, NULL)
(3, 2)
(4, 3)
(5, NULL)
(6, 4)
(7, 5)
此表中有3个列表:
(1,)
(2,3,4,6)
(5,7)
我想找出每个列表的最后一个元素和列表中的元素数。我要查找的查询将输出:
last, len
1, 1
6, 4
7, 2
这在sql中可能吗?
我有一个sql表,其中的“行”表示链表的元素。例如,我可以有以下记录:
(id, previous_id)
------------------
(1, NULL)
(2, NULL)
(3, 2)
(4, 3)
(5, NULL)
(6, 4)
(7, 5)
此表中有3个列表:
(1,)
(2,3,4,6)
(5,7)
我想找出每个列表的最后一个元素和列表中的元素数。我要查找的查询将输出:
last, len
1, 1
6, 4
7, 2
这在sql中可能吗?
3条答案
按热度按时间slmsl1lt1#
db<>在这里摆弄
精确生成结果。
如果你还想要第一个元素,比如你的标题状态,那是很容易得到的。
pgpifvop2#
可以使用递归cte:
这是一把小提琴。
xkrw2x1b3#
下面是microsoft sql server 2016 db中的一个实现