MySQL - 使用IF语句的多列UPDATE语句

时间:2014-04-28 19:26:42

标签: mysql

目标是将表1链接到表2,并在表1不是默认值时填充表1。

示例:

UPDATE table1 aa, table2 bb
SET aa.column2=IF(aa.column2=0,bb.column2,aa.column2) and aa.column3=IF(aa.column3=0,bb.column3,aa.column3)... Total of 5 columns being updated
WHERE aa.column1=bb.column1;

当我跑步时,我的人口很少。但是,如果我从SET行删除除一个IF语句之外的所有语句,则一切都按预期工作。

我对MySQL很新,所以任何人都能提供的任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:0)

最好使用显式join语法。但是,更重要的是,您不使用and来连接set语句。您可以使用and,语句连接布尔值和set。这对查询的解释方式有很大影响。

试试这个:

UPDATE table1 aa JOIN
       table2 bb
       ON aa.column1=bb.column1
  SET aa.column2=IF(aa.column2=0,bb.column2,aa.column2), 
      aa.column3=IF(aa.column3=0,bb.column3,aa.column3),
       ... Total of 5 columns being updated;

答案 1 :(得分:0)

使用逗号代替and。 逗号是分隔符,and只是运算符。