我想执行行更新/替换,以便未指定值的列保持不变,例如,对于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)
答案 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方言中意味着不同的东西。