MYSQL插入第一个空列

时间:2012-10-30 14:33:18

标签: mysql sql query-optimization

我有一个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=''

1 个答案:

答案 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,检查第一个空列,如果不需要更改,则将其值设置为当前值。