zoukankan      html  css  js  c++  java
  • 有人在群里问mysql如何选择性更新部分条件的问题

    有人在群里问这个问题

    update xt_kh set zhye=zhye+1,hzyj=hzyj+1 where dlgh='kiss0451' and hzms=1
    如果这样写 hzms不等于1的时候 zhye字段也不更新了,
    我想要的是 zhye 必须更新,而hzyj是选择性的,怎么用update来实现啊?

    他提出根据hzms进行部分更新,那么主条件是dlgh='kiss0451' 是必须确定的,如此以来,这个 hzms 就不能作为条件子句了,有人提出用两条语句实现,不过他说必须用一条,嗯哼,看来是有点麻烦的。

    根据条件进行判断,那么我就自然而然的想到可以用if表达式进行实现

    效果如下

    SQL如下:

    update xt_kh set zhye=zhye+1,hzyj=if(hzms=1,hzyj+1,hzyj) where dlgh='kiss0451' 

    这里面的问题就在于,要先将 zhye的条件确定好,这个是必然要更新,然后 hzyj要部分更新,那么关键就在于根据hzms进行判断 如果等于1 则更新加1 否则还是自身,这是问题的核心,其实更新为自身也是更新,只不过影响行数没变而已,对于用户而言好像是没更新,其实对于数据库而言,是更新了。而对于SQL而言也是一条SQL就实现了需求了。

  • 相关阅读:
    代码高亮测试
    自定义Edit控件控制输入范围
    多字节字符与界面 manifest
    实现类成员函数回调
    [VIM插件]fedora22编译vim7.4对perl组件支持的问题
    火车头Ecshop2.7文章采集发布模块
    js 创建对象
    js 属性类型
    JS函数的属性
    JS 函数中返回另一个函数
  • 原文地址:https://www.cnblogs.com/lizhaoyao/p/8459242.html
Copyright © 2011-2022 走看看