sqlite使用自身更新列

sqlite使用自身更新列,sqlite,sql-update,Sqlite,Sql Update,我有一张这样的桌子 a b c -- -- -- 1 1 10 2 1 0 3 1 0 4 4 20 5 4 0 6 4 0 create temp table u as select t1.c from t t1 join t t2 on t1.a=t2.b; update t set c=(select * from u where rowid=t.rowid); b列“指向”a,有点像a是父列。 计算c。现在我需要将父c值传播给它们的子级 结果将是 a

我有一张这样的桌子

a  b  c
-- -- -- 
1  1  10
2  1  0
3  1  0
4  4  20
5  4  0
6  4  0
create temp table u as select t1.c  from t t1 join t t2 on t1.a=t2.b;
update t set c=(select * from u where rowid=t.rowid);
b列“指向”a,有点像a是父列。 计算c。现在我需要将父c值传播给它们的子级

结果将是

a  b  c
-- -- -- 
1  1  10
2  1  10
3  1  10
4  4  20
5  4  20
6  4  20
我无法创建有效的更新/选择组合

到目前为止,我得到了一个选择,它产生了我想要得到的c列

select t1.c  from t t1 join t t2 on t1.a=t2.b;
c
----------
10
10
10
20
20
20
但我不知道怎么把它塞进c

先发制人
干杯,phi

您必须使用以下选项查找值:


我终于找到了一种方法,将我最初的“temp”SELECT JOIN复制回表“t”。像这样的

a  b  c
-- -- -- 
1  1  10
2  1  0
3  1  0
4  4  20
5  4  0
6  4  0
create temp table u as select t1.c  from t t1 join t t2 on t1.a=t2.b;
update t set c=(select * from u where rowid=t.rowid);
我想知道两个解决方案,你的一个查询更新相关选择,我的两个分别是两个查询和一个相关查询,如何比较性能。我的似乎更重,更不美观,但关于性能我想知道

在Algo方面,您的注意不要复制父数据,只复制子数据,我的复制父数据本身,但这是一个nop,但会消耗一些周期:)


干杯,Phi

Thanx CL,我知道这很琐碎:)我的大脑还没有SQL格式:),干杯。我想在你的回复后发帖,但我的帖子在你打破进化的顺序之前被提升了。我被这个编辑弄糊涂了。这是否意味着我应该将我关于两个解决方案之间性能的问题发布到另一个“问题”上。我想问你这个问题,因为你似乎对StackOverflow的处理很了解。我了解了一点(需要时间)是否有办法与一些用户“聊天”,例如在发布前询问第二个意见,或者在这种情况下询问可能没有用的补充信息(就像这两种解决方案的性能一样,应该如何做到这一点呢?)你可以问一个新问题(),但随后你会得到一条评论:“你为什么怀疑你的测量?”