只更换色谱柱

时间:2014-07-15 11:45:05

标签: sql sqlite

用值替换表中整行的最佳方法是什么,但只有在我们拥有的值不为NULL时才替换特定值。

详细说明,我目前使用此查询:

INSERT OR REPLACE INTO items (name, quantity, last_user) VALUES ('test', '3', 'John');  

现在我要做的是运行上面的查询,如果指定的值不是NULL,则只替换last_user。其余的我想替换。

理想情况下,如果最后一个用户现在为NULL,请保留最后一个字段。我当然可以使用SELECT语句来获取最后一个已知值,检查新值是否为NULL以及是否插入最后一个已知值 - 但我想使用单个查询来执行此操作。 / p>

1 个答案:

答案 0 :(得分:2)

使用带COALESCE的更新语句,传递旧值和新值。如果它不为null,这将允许您保留现有值,如果它为null,则将其替换。

UPDATE MyTable 
SET
    name = 'new-name',
    value = COALESCE(value, 'possible-new-value')
WHERE

    id = 1;