問合せ:UPDATE item_table SET field1=field1_spanish, field2=field2_spanish;
SQLiteの更新列のみ値が空でない場合
質問:はどのように私はfield1_spanish
が空でない場合にのみfield1_spanish
でfield1
を更新することができますか? field2_spanish
が空でない場合、field2
をfield2_spanish
に更新したいと思います。
ありがとうございます!
問合せ:UPDATE item_table SET field1=field1_spanish, field2=field2_spanish;
SQLiteの更新列のみ値が空でない場合
質問:はどのように私はfield1_spanish
が空でない場合にのみfield1_spanish
でfield1
を更新することができますか? field2_spanish
が空でない場合、field2
をfield2_spanish
に更新したいと思います。
ありがとうございます!
http://sqlfiddle.com/#!5/58554/1
update
item_table
set
field1 = coalesce(field1_spanish, field1),
field2 = coalesce(field2_spanish, field2)
coalesce()
機能がnullではない、それに渡される引数の最初に戻ります。この場合、field2_spanishはnullなので、field2をfield2に設定します(基本的に何もしません)。
と空の文字列とNULL値をサポートするために、これを試してみてください。 http://sqlfiddle.com/#!5/b344f/3
update
item_table
set
field1 = case when coalesce(field1_spanish, '') = '' then
field1
else
field1_spanish
end,
field2 = case when coalesce(field2_spanish, '') = '' then
field2
else
field2_spanish
end
これらの列の全てが同じテーブル内にあると仮定すると:
update some_table
set field1=field1_spanish,
field2=field2_spanish
where field1_spanish is not null
and field2_spanish is not null;
field1
の場合とfield2
をしていますtable
と*_spanish
の列はtable_spanish
にあります。次に、よく... SQLite doesn't support a from
clause in an update
statementです。したがって、相関サブクエリを実行する必要があります。 table
がtable_spanish
によって参照されるid
の主キーを持っていると仮定すると、あなたが行うことができます:
update table a
set field1=(select s.field1_spanish
from table_spanish s
where field1_spanish is not null
and s.id=a.id),
field2=(select s.field2_spanish
from table_spanish s
where field2_spanish is not null
and s.id=a.id);
それとも、参加を経由してステージング表を移入し、その後table
から関連するエントリを削除してから新しいデータを挿入することができますステージングテーブル(すべてのトランザクションを必ず使用してください!)第2の手法では、
BTW - sqlfiddle.comは私のサイト –
すごいサイトと答え!ありがとう! – Fostah
@JakeFeasel - 優れたサイト!しかし、私のバックボタンをハイジャックしないことを願っています... –