如果值不为null,则更新数据库的SQL查询?

时间:2011-05-23 15:44:16

标签: sql database sqlite sql-update

我有一张桌子,里面有大约17个田地。我需要在此表中执行频繁更新。但问题是每次我只更新几个字段。什么是在这种情况下编写查询以进行更新的最佳方法?我正在寻找一个选项,只有当值不为空时值才会更新

例如,我在数据库Say A,B,C,D中有四个字段。 用户更新说D的值。所有其他值保持不变。所以我想要一个更新查询,它只更新D的值,保持其他人不变。  所以如果我把a,b和c作为null并且d与用户提供的值我想写一个更新查询,它只更新d的值为a,b和c为null。 这是可以实现的吗?

我正在使用SQLite数据库。

有人可以请一些光吗?

2 个答案:

答案 0 :(得分:56)

在不了解您的数据库的情况下,很难具体。在SQL Server中,语法类似于......

UPDATE MyTable 
SET 
        Field1 = IsNull(@Field1, Field1),
        Field2 = IsNull(@Field2, Field2),
        Field3 = IsNull(@Field3, Field3)
WHERE 
     <your criteria here>

修改

由于您指定了SQLLite ...将IsNull函数替换为COALESCE(),或者交替查看IfNull函数。

答案 1 :(得分:1)

发布一个SQL Server解决方案,其中有两个表供后代使用。 Query连接两个表并更新存在的值。否则保持原始值。

tables = table1,table2每个都有field1和field2

update t1 WITH (ROWLOCK)
set T1.Field2 = ISNULL(T2.Field2,T1.Field2)
from Table1 T1 Join Table2 T2 
    ON T1.Field1 = T2.Field1