我有一张桌子,里面有大约17个田地。我需要在此表中执行频繁更新。但问题是每次我只更新几个字段。什么是在这种情况下编写查询以进行更新的最佳方法?我正在寻找一个选项,只有当值不为空时值才会更新。
例如,我在数据库Say A,B,C,D中有四个字段。 用户更新说D的值。所有其他值保持不变。所以我想要一个更新查询,它只更新D的值,保持其他人不变。 所以如果我把a,b和c作为null并且d与用户提供的值我想写一个更新查询,它只更新d的值为a,b和c为null。 这是可以实现的吗?
我正在使用SQLite数据库。
有人可以请一些光吗?
答案 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