【sql技巧】mysql修改时,动态指定要修改的字段 update `table` set (case when ....) = 1 where id = xx
如果你点进了这篇帖子,那么你一定遇到了跟我一样的问题。别看题目的set case when...,我一开始也是第一反应是用case when但是发现并不好使。
问题呢,说得高大上一点:动态指定要修改的字段。
其实小白在这里并没找到我以为的解决方法[笑哭],但是好歹问题是解决了。
这里是原帖的地址:
这里记录一下方法,其实就是更新了你所有的可能要更新的值,在更新值的时候判断这个字段是否 要更新,不更新则附上原值,更新则附上新值。[笑哭][笑哭][笑哭][笑哭][笑哭]
最后的成品sql如下:(需求背景是 当sender_id等于传进来的userId时,更新send_status为2;当receiver_id等于userId时,更新receiver_status为2)
UPDATE message
SET send_status = (CASE WHEN sender_id = #{userId, jdbcType=BIGINT} THEN 2 ELSE send_status END),
receive_status = (CASE WHEN receiver_id = #{userId, jdbcType=BIGINT} THEN 2 ELSE receive_status END)
WHERE dialog_id IN ( <foreach collection="list" item="item" index="index" separator="," >
#{item, jdbcType=BIGINT}
</foreach>
)
我这里用的是mybatis,批量修改。
工作中遇到的,希望能帮助同样困惑的人
【sql技巧】mysql修改时,动态指定要修改的字段 update `table` set (case when ....) = 1 where id = xx的更多相关文章
- MySQL触发器更新本表数据异常:Can't update table 'tbl' in stored function/trigger because it
MySQL触发器更新本表数据异常:Can't update table 'tbl' in stored function/trigger because it 博客分类: 数据库 MySQLJava ...
- MyBatis构建sql时动态传入表名以及字段名
今天项目需要用到动态表名,找到这一篇文章,亲测可用 用了mybatis很长一段时间了,但是感觉用的都是比较基本的功能,很多mybatis相对ibatis的新功能都没怎么用过.比如其内置的注解功能之类的 ...
- EF中数据修改时动态更新其他数据
场景 利用.net core开发时,经常会遇到使用EF(Entity Framework),但是今天在开发过程中发现一个值莫名其妙的自己变了,我怀疑是EF的问题. 主要代码如下: 1 // 最近一条告 ...
- c#开发的程序安装时动态指定windows服务名称
转自:http://www.jb51.net/article/30549.htm 前段时间由于项目的需求,要在Windows里把同样的组件制作成多个不同名称的服务,这些服务完成类似的功能,仅需要修改业 ...
- 关于C#读取MySql数据时,返回DataTable中某字段数据是System.Array[]形式
我在使用C#(VS2008)读取MySql数据库(5.1版本)时,返回的DataTable数据中arrivalDate字段数据显示为System.Array[]形式(程序中没有对返回的数据进行任何加工 ...
- sql:mysql:函数:TIMESTAMPDIFF函数实现TimeStamp字段相减,求得时间差
函数内指定是minute,则最终结果value值的单位是分钟,如果函数内指定为hours,则最终结果value值单位为小时. //UPLOAD_TIME 减去 CREATE_DTTM 求得时间差,以分 ...
- sql多表查询时怎么获取查到的字段
首先,多表查询不能用hql(貌似hql就是不支持多表查询,如果可以,希望看到的朋友给个例子) List list = systemService.findListbySql("SELECT ...
- Mysql学习—查看表结构、修改和删除数据表
原文出自:http://blog.csdn.net/junjieguo/article/details/7668775 查看表结构 查看表结构可以用语句DESCRIBE或SHOW CREATE TAB ...
- Ubuntu14.04 如何修改/etc/sudoers 和错误修改权限的解决办法
开始学习hadoop啦!!! 在Ubuntu14.04上新建了一个名为hadoop的用户,但总是遇到各种权限问题,于是就想干脆把这个账户变成root账户. 网上查到说是直接修改/etc/sudoers ...
随机推荐
- BFS POJ 3414 Pots
题目传送门 /* BFS:六种情况讨论一下,BFS轻松解决 起初我看有人用DFS,我写了一遍,TLE..还是用BFS,结果特判时出错,逗了好长时间 看别人的代码简直是受罪,还好自己终于发现自己代码的小 ...
- 使用mysqldump导出数据库(表)
mysqldump用来备份数据库或在不同数据库之间迁移数据,mydqldump的备份内容包括用来创建表和装载表的SQL语句. 一.mysqldump使用方法 (1).备份单个数据库或数据库中的部分表, ...
- 聊聊MyBatis缓存机制
https://tech.meituan.com/mybatis_cache.html 前言 MyBatis是常见的Java数据库访问层框架.在日常工作中,开发人员多数情况下是使用MyBatis的默认 ...
- [Python实战] 功能简单的数据查询及可视化系统
前言 数据时代,数据的多源集成和快速检索查询是第一步,配上数据分析及可视化才能算窥得大数据一角. 创建这个项目的主要目的一是对前期工作的一些总结,二是提升自己. 这里简单介绍一下sqlpro这个项目的 ...
- 配置JDK、tomcat及Java Web项目部署
一.JDK的安装 (1)下载安装JDK: 这个就不用说了,直接官网下载jdk安装即可.http://www.oracle.com/technetwork/java/javaee/downloads/i ...
- myeclipse中js文件报错
这几天在myeclipse中添加文件时,会报错,但是代码是从官网上下载的,没有错误,只是myeclipse的检查较为严格.在网上找到解决方案,希望可以帮到强迫症的人. 解决步骤: 1.window→P ...
- Android OKHttp网络框架
好久没逛简书了.这周公司的项目也已经愉快的迭代了新版本,对于之前一直存留的东西一直没怎么梳理,今天想说说这两年特别火的网络框架.okhttp我想大部分Android开发者都不陌生,因为它的到来.是我们 ...
- text-shadow的用法详解
1.兼容性:text-shadow 和 box-shadow 这两个属性在主流现代浏览器上得到了很好的支持( > Chrome 4.0, > Firefox 3.5, > Safar ...
- js类型识别
typeof总结: 可以识别标准类型(Null除外) 不能识别具体的对象类型(Function除外) Object.prototype.toString总结: 可以识别标准类型和内置对象类型 不能识别 ...
- HiveServer2后台运行
nohup hive --service hiveserver2 & 或者直接: nohup hiveserver2 &