将一列更新为其他两列的总和

时间:2012-02-09 15:31:40

标签: android sql sqlite

我需要用一列作为同一表中其他两列的总和来更新表的每一行

像这样

  

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

4 个答案:

答案 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