sql - SQL更新/替换行,不影响某些列

标签 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" ); 


这可能吗?如果不是这样,我猜测替代方法是提取现有行,根据需要合并数据,然后执行替换,但这似乎是数据库应该做的事情?模式的东西?

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

最佳答案

使用UPDATE语句,如下所示:

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


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

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

注意:不幸的是,REPLACE在不同的SQL方言中表示不同的事物。

关于sql - SQL更新/替换行,不影响某些列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4837159/

相关文章:

c# - 给定当前记录的 ID,这是选择上一条和下一条记录的正确方法吗?

SQL - 从多个表中获取关联数据

sql - 连接不同类型字段时的隐式转换

sql - 将数据复制到同一个表中或从同一个表中复制数据,并将复制的数据中某一列的值更改为指定值

mysql - 这应该是 INNER JOIN 还是 LEFT Join?

sql - 为什么我不能在此查询中进行任何类型的连接?

sql - 为什么 sqlite 会提示这段代码?

android - 列 '_id' 不存在 SimpleCursorAdapter 重新访问

SQLite:优化表扫描

mysql - 如何存储用户上传的大量照片和视频?