2

私はtblを持っています、例えば:

uniqueId     |    col1    |    col2   |   col3   
u1                 8       
u2
u3                 13           89

私が欲しいのは、最初の空の列に挿入することです(それが役立つ場合はnullにすることができます)。与えられた場合、u1に値2を追加すると、col2に挿入されます。u2で実行すると、col1に入ります。u3の場合はu3に入ります。これらの3つのクエリでうまくいきますが、1つで実行したいと思います。

INSERT INTO tbl SET col1 = $toInsertVal WHERE uniqueId=u col1=''
INSERT INTO tbl SET col2 = $toInsertVal WHERE uniqueId=u col1<>'' AND col2=''
INSERT INTO tbl SET col3 = $toInsertVal WHERE uniqueId=u col1<>'' AND col2<>'' AND col3=''

4

1 に答える 1

1
insert into tbl set 
col1 = case when col1 = '' then $toInsertVal else col1 end
, col2 = case when col2 = '' and col1 <> '' then $toInsertVal else col2 end
...
where uniqueid = u

NULL簡単にするために s を無視しました。基本的に、各列で a を使用しCASEて、最初の空の列をチェックし、変更が必要ない場合はその値を現在の値に設定できます。

于 2012-10-30T14:36:03.567 に答える