sql update / replace row使一些列不受影响

时间:2011-01-29 13:39:21

标签: sql sqlite rdbms

我想执行行更新/替换,以便未指定值的列保持不变,例如,对于4列表:

-- expecting row = 99|a|b|?
replace into game_data ( id, col_a, col_b ) values ( 99, "a",  "b" ); 

-- expecting row = 99|a|b2|c  < a remains unchanged
replace into game_data ( id, col_b, col_c ) values ( 99, "b2", "c" ); 

这可能吗?如果没有,我猜测替代方案是提取现有行,根据需要合并数据然后执行替换,但这似乎是db应该做的事情?架构的东西?

(对于从bash脚本中使用的sqlite3)

1 个答案:

答案 0 :(得分:3)

使用UPDATE语句,如下所示:

UPDATE game_data
  SET col_a = 'a', col_b = 'b'
WHERE id= 99

这将为id为99的行设置col_a和col_b的值,保持所有其他列值不变。

(注意:REPLACE()是字符串替换函数。)

注意:不幸的是,REPLACE在不同的SQL方言中意味着不同的东西。