我有一个tbl,例如:
uniqueId | col1 | col2 | col3
u1 8
u2
u3 13 89
我想要的是插入第一个空列(如果有帮助,可以使它们为null)。在给定的情况下,如果我将u1添加到值2,它将被插入到col2中。如果我为u2做,它将进入col1。对于u3,它将进入u3。这三个查询可以解决这个问题,但我宁愿一个查询。
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=''
答案 0 :(得分: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
。基本上,您可以在每列上使用CASE
,检查第一个空列,如果不需要更改,则将其值设置为当前值。