SQL更新/替换行留下一些列不受影响
问题描述:
我想执行行更新/替换,以便未指定值的列保持原样。对于4列表:SQL更新/替换行留下一些列不受影响
-- 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");
这可能吗?如果没有,我猜测替代方法是提取现有的行,根据需要合并数据然后执行替换,但这似乎是一个数据库应该做的事情?一个架构的东西?
(用于sqlite3的是从bash脚本使用)
答
使用UPDATE语句,就像这样:
UPDATE game_data
SET col_a = 'a', col_b = 'b'
WHERE id= 99
这将设置为col_a和col_b值99 ID行,使所有其他列值不变。
(注意:REPLACE()是一个字符串替换函数)。
注意:不幸的是,REPLACE在不同的SQL方言中意味着不同的东西。
考虑到查询甚至可以工作,应该非常明显的是`REPLACE`不是字符串函数。阅读文档:http://www.sqlite.org/lang_replace.html – 2011-01-29 13:50:05