我使用sqlite并且有一个看起来像的表:
我正在尝试使用col2对应的col1
中的值更新refer列我尝试了像
这样的查询update tab1
set refer = (select col2 from tab1 where col1 = refer)
where col1 = 2
但这不起作用。
我也试过
update tab1
set refer = (select tem1.col2
from tab1 tem1, tab1 tem2
where tem1.col1 = tem2.refer and tem2.col1=2)
where col1 = 2
这很有效。
但我不确定这是否是正确的做法。
答案 0 :(得分:0)
期待您的代码,您需要
update tab1
set refer = col2
when col1 = refer
and col1 = 2
这意味着
update tab1
set refer = col2
when refer 2
oherwise fi yoru正在寻找带有子查询的同一个表的更新,您应该使用内连接
在mysql中
update tab1
INNER JOIN (
select col1, col2
from tab1
where col1 = refer ) t t.col1 = tabl1.col1 and col1 = 2
在sqllite中你可以使用
update tab1
set refer = (select t.col2 from (
select col2 from tab1 where col1 = refer
) t )
where col1 = 2
答案 1 :(得分:0)
最后这个查询完美无缺:
update tab1
set refer = (select t1.col2 from tab1 as t1 where t1.col1 = tab1.refer)
where tab1.col1 = 2