我需要用一列作为同一表中其他两列的总和来更新表的每一行
像这样
UPDATE table1 SET table1.column1 = sum(table1.column1 + table1.column2)为每一行
我试过
This is working for me
UPDATE table1 SET column1 =(SELECT SUM(column1 + column2) FROM table1 where rowid = 1) WHERE rowid = 1
所以我可以通过首先选择所有rowId
来迭代每个rowid来做到这一点for( all rowid as i){
UPDATE table1 SET column1 =(SELECT SUM(column1 + column2) FROM table1 where rowid = i) WHERE rowid = i
}
但我需要在一个查询中对该表中的所有行执行
当我尝试时:
update table1 set column1 = (select (column1 + column2) from table1 )
这将汇总column1和column2的所有值 我想连续做
有什么想法吗?
我使用 sqLite for Android
答案 0 :(得分:18)
不需要循环或内部选择。试试这个:
UPDATE table1 SET column1 = column1 + column2
答案 1 :(得分:3)
允许从set
子句中的列读取:
UPDATE table1
SET column1 = column1 + column2
WHERE rowid = 1
答案 2 :(得分:2)
对于您不需要WHERE
谓词的所有行:
UPDATE table SET
column1 = column1+column2
这就是全部。
答案 3 :(得分:0)
我发现CTE最适合我
;with new_count
as
(select rownumber
,sum(isnull([col1],0) +
isnull([col2],0) +
isnull([col3],0) +
isnull([col4],0) +
isnull([col5],0)) as [New Count]
from #tbl1
group by rownumber
)
update t1
set t1.[New Count] = isnull(nc.[New Count],0)
from new_count nc
join #tbl1 t1
on t1.rownumber = nc.rownumber