在需要创建语句更新时,需要如下所示:
update table1
set lp=1, mpe=0, pe=0, f2_lp=0, f1_lp=0, mvlp=0 if (lp=1)
set lp=0, mpe=1, pe=0, f2_lp=0, f1_lp=0, mvlp=0 if (mpe=1)
set lp=0, mpe=0, pe=1, f2_lp=0, f1_lp=0, mvlp=0 if (pe=1)
set lp=0, mpe=0, pe=0, f2_lp=1, f1_lp=0, mvlp=0 if (f2_lp=1)
set lp=0, mpe=0, pe=0, f2_lp=0, f1_lp=1, mvlp=0 if (f1_lp=1)
set lp=0, mpe=0, pe=0, f2_lp=0, f1_lp=0, mvlp=1 if (mvpl=1)发布于 2014-11-04 17:56:45
把这句话改一遍,先说条件。我通常建议您使用case,但可能可以这样做:
update table1
set lp = (lp = 1),
mp2 = (mp2 = 1),
mpe = (mpe = 1),
f2_lp = (f2_lp = 1),
f1_lp = (f1_lp = 1),
mvlp = (mvlp= 1);这不是你想要的。对于你所描述的:
update table1
set lp = (case when lp = 1 then 1 else 0 end),
mp2 = (case when lp = 1 then 0 when mp2 = 1 then 1 else 0 end),
mpe = (case when lp = 1 or mp2 = 1 then 0 when mpe = 1 then 1 else 0 end),
f2_lp = (case when lp = 1 or mp2 = 1 or mpe = 1 then 0 when f2_lp = 1 then 1 else 0 end),
. . .发布于 2014-11-04 17:56:26
您可能希望将其划分为多个updates语句,并在每个语句中使用WHERE子句来强制执行您的条件。
您应该注意如何实现这一点,因为执行的顺序很重要。例如,如果您有一个lp=1和mpe=1行,您想做什么?您想设置lp=0还是设置mpe=0?
下面是一个基于代码片段的示例来帮助您入门:
update table1
set lp=1, mpe=0, pe=0, f2_lp=0, f1_lp=0, mvlp=0
where (lp=1)
update table1
set lp=0, mpe=1, pe=0, f2_lp=0, f1_lp=0, mvlp=0
where (mpe=1)
update table1
set lp=0, mpe=0, pe=1, f2_lp=0, f1_lp=0, mvlp=0
where (pe=1)
update table1
set lp=0, mpe=0, pe=0, f2_lp=1, f1_lp=0, mvlp=0
where (f2_lp=1)
update table1
set lp=0, mpe=0, pe=0, f2_lp=0, f1_lp=1, mvlp=0
where (f1_lp=1)
update table1
set lp=0, mpe=0, pe=0, f2_lp=0, f1_lp=0, mvlp=1
where (mvpl=1)https://stackoverflow.com/questions/26741687
复制相似问题