1
我有一個包含列reporting_unit和predesessor的提供者信息(提供者)表。 Predesessor要麼是 null,要麼包含該行用於表示的reporting_unit。我需要 來查找任何提供者的當前reporting_unit。我的意思是,對於任何具有預定義的reporting_unit,reporting_unit是對於predesessor的current_reporting_unit。如何使用遞歸查詢跟蹤以前的id?
我想 使用遞歸CTE來實現這一點,因爲有一些時間 有多個鏈接。
表看起來是這樣的:
CREATE TABLE providers (
reporting_unit TEXT,
predesessor TEXT
);
INSERT INTO providers
VALUES
(NULL, NULL),
('ARE88', NULL),
('99BX7', '99BX6'),
('99BX6', '99BX5'),
('99BX5', NULL)
;
的結果,我想從那個是:
reporting_unit | current_reporting_unit
---------------------------------------
'99BX5' | '99BX7'
'99BX6' | '99BX7'
我當前的查詢是:
WITH RECURSIVE current_ru AS (
SELECT reporting_unit, predesessor
FROM providers
WHERE predesessor IS NULL
UNION ALL
SELECT P.reporting_unit, P.predesessor
FROM providers P
JOIN current_ru CR
ON P.reporting_unit = CR.predesessor
)
SELECT *
FROM current_ru
;
但是,ISN沒有給我我要找的結果。我在這個查詢中嘗試了許多變體,但它們似乎都以無限循環結束。如何