約17のフィールドがあるテーブルがあります。この表で頻繁に更新する必要があります。しかし、問題は毎回いくつかのフィールドのみを更新する場合があるです。そのようなシナリオで更新するためのクエリを記述する最良の方法は何ですか? 値がnullでない場合にのみ更新されるオプションを探しています。
たとえば、データベースSay A、B、C、Dに4つのフィールドがあります。ユーザーは、たとえばDの値を更新します。他の値はすべて同じままです。したがって、Dの値のみを更新し、他を変更しない更新クエリが必要です。 SO a、b、cをnull、dをユーザーが指定した値に設定した場合、d、a、b、cの値のみnullを更新する更新クエリを書きたい。それは達成可能なものですか?
SQLiteデータベースを使用しています。
誰かがそれに光を投げてもらえますか?
データベースを知らなくても、特定するのは困難です。 SQL Serverでは、構文は次のようになります...
_UPDATE MyTable
SET
Field1 = IsNull(@Field1, Field1),
Field2 = IsNull(@Field2, Field2),
Field3 = IsNull(@Field3, Field3)
WHERE
<your criteria here>
_
[〜#〜] edit [〜#〜]
SQLLiteを指定したので、IsNull
関数をCOALESCE()
に置き換えるか、IfNull
関数を代わりに見てください。
UPDATE your_table
SET some_column = 42
WHERE some_column IS NOT NULL
Nullでない場合にのみsome_columnを更新します
後世のために2つのテーブルを持つSQL Serverソリューションを投稿します。クエリは2つのテーブルを結合し、存在する値を更新します。それ以外の場合、元の値が維持されます。
テーブル= 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