Надеюсь, это не дубликат, я несколько красных сообщений, но не мог понять, как это исправить.sqlite CTE с UPDATE
У меня есть таблица, как этот
CREATE TABLE yo (ad INTEGER PRIMARY KEY, pa INTEGER, pd INTEGER);
INSERT INTO yo VALUES
(1,1,1),(2,1,3),(3,1,4),(4,3,5),(5,4,2),(6,3,8),(7,1,9),(8,6,7),(9,3,6);
.header on
.mode column yo
select * from yo;
ad pa pd
---------- ---------- ----------
1 1 1
2 1 3
3 1 4
4 3 5
5 4 2
6 3 8
7 1 9
8 6 7
9 3 6
Я могу создать временную таблицу с помощью КТР для получения уровня глубины в седловине «полидисперсность», как этот
CREATE table ui AS
WITH RECURSIVE ui(a,l) AS
(VALUES(1,0)
UNION ALL
SELECT yo.ad, ui.l+1
FROM yo JOIN ui ON yo.pa=ui.a
WHERE yo.pa!=yo.ad
ORDER BY 2 desc
)
SELECT a,l FROM ui;
select * from ui;
a l
---------- ----------
1 0
2 1
3 1
4 2
5 3
6 2
8 3
9 2
7 1
Затем я хочу добавить col to table 'yo' и введите th ui.l там
ALTER TABLE yo ADD COLUMN lv INTEGER;
UPDATE yo SET lv=
(SELECT ui.l
FROM ui
WHERE ui.a=yo.ad);
select * from yo;
ad pa pd lv
---------- ---------- ---------- ----------
1 1 1 0
2 1 3 1
3 1 4 1
4 3 5 2
5 4 2 3
6 3 8 2
7 1 9 1
8 6 7 3
9 3 6 2
Все работает нормально. Теперь мне нравится комбинировать временную таблицу «ui» create и table «yo» update в 1 запросе?
Я пробовал много бонусов сражений, не мог найти решение, я уверен, это очевидно, но я недостаточно свободен, чтобы его получить.
Если создание КТР быть перед UPDATE как в
How to use CTE's with update/delete on SQLite?
Или КТР вычисляться в отборное внутри UPDATE
Thanx заранее для любой помогает
Приветствия , Phi
Thanx CL, господи я сделал попробовать два варианта, я, должно быть, немного глюк где, потому что я получил только он весь Col установлен в 1 (или 0) OR У меня есть зависание (петля). Во всяком случае, для этого нужно. Cheers, Phi – Phi