MYSQL更新,如果
需要创建句子更新时,需要以下内容:MYSQL更新,如果,mysql,sql-update,Mysql,Sql Update,需要创建句子更新时,需要以下内容: 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, mv
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)
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);
您可能希望将其分成多个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)
请先用条件重新表述一下。我通常会建议您使用
案例
,但可能可以这样做:
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)
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),
. . .
是的,我知道这个句子是这样工作的,但我真的需要用if或case来做这个查询