我有一個submissions
表,它基本上是一個單鏈表。鑑於給定行的id
我想返回整個列表,特定行是其中的一部分(並且按照正確的順序)。例如,在下面的表中,如果有ID 2
我想要按順序取回行1,2,3,4
。在PostgreSQL中獲取行的序列(鏈接列表)
(4,3) -> (3,2) -> (2,1) -> (1,null)
我希望1,2,3,4
這裏,是因爲4實質上是列表的頭2
屬於我希望在列表中遍歷所有。
http://sqlfiddle.com/#!15/c352e/1
有沒有辦法做到這一點使用PostgreSQL的遞歸CTE?到目前爲止,我有以下但這隻會給我的父母,而不是後代
WITH RECURSIVE "sequence" AS (
SELECT * FROM submissions WHERE "submissions"."id" = 2
UNION ALL SELECT "recursive".* FROM "submissions" "recursive"
INNER JOIN "sequence" ON "recursive"."id" = "sequence"."link_id"
)
SELECT "sequence"."id" FROM "sequence"
只是要知道,你能詳細解釋如何使用你的數據從'2'獲得'1,2,3,4'嗎?如果我們從'id = 2'開始:'(2,1) - >(1,null)'...似乎你的查詢是正確的,但是期望是錯誤的。 – Abelisto
@Abelisto我需要能夠在序列中提供任何'id'。所以,如果我提供1,2,3或4我應該得到相同的結果,因爲我基本上想要該行是一部分的整體血統 –