首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL的语句更新

问MYSQL的语句更新
EN

Stack Overflow用户
提问于 2014-11-04 17:50:17
回答 2查看 68关注 0票数 0

在需要创建语句更新时,需要如下所示:

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-04 17:56:45

把这句话改一遍,先说条件。我通常建议您使用case,但可能可以这样做:

代码语言:javascript
复制
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);

这不是你想要的。对于你所描述的:

代码语言:javascript
复制
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),
          . . .
票数 1
EN

Stack Overflow用户

发布于 2014-11-04 17:56:26

您可能希望将其划分为多个updates语句,并在每个语句中使用WHERE子句来强制执行您的条件。

您应该注意如何实现这一点,因为执行的顺序很重要。例如,如果您有一个lp=1和mpe=1行,您想做什么?您想设置lp=0还是设置mpe=0?

下面是一个基于代码片段的示例来帮助您入门:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26741687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档