Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
来源:互联网 发布:g76锥螺纹怎么编程 编辑:程序博客网 时间:2024/05/22 01:42
如何用一条sql语句实现批量更新?mysql并没有提供直接的方法来实现批量更新,但是可以用点小技巧来实现。
复制代码 代码如下:
UPDATE mytable SET myfield = CASE id WHEN 1 THEN 'value' WHEN 2 THEN 'value' WHEN 3 THEN 'value'END WHERE id IN (1,2,3);
这里使用了case when 这个小技巧来实现批量更新。
举个例子:
复制代码 代码如下:
UPDATE categories SET display_order = CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHEN 3 THEN 5 ENDWHERE id IN (1,2,3);
这句sql的意思是,更新display_order 字段,如果id=1 则display_order 的值为3,如果id=2 则 display_order 的值为4,如果id=3 则 display_order 的值为5。
即是将条件语句写在了一起。
这里的where部分不影响代码的执行,但是会提高sql执行的效率。确保sql语句仅执行需要修改的行数,这里只有3条数据进行更新,而where子句确保只有3行数据执行。
如果更新多个值的话,只需要稍加修改:
复制代码 代码如下:
UPDATE categories SET display_order = CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHEN 3 THEN 5 END, title = CASE id WHEN 1 THEN 'New Title 1' WHEN 2 THEN 'New Title 2' WHEN 3 THEN 'New Title 3'ENDWHERE id IN (1,2,3);
到这里,已经完成一条mysql语句更新多条记录了。但是要在业务中运用,需要结合服务端语言,这里以php为例,构造这条mysql语句:
复制代码 代码如下:
$display_order = array( 1 => 4, 2 => 1, 3 => 2, 4 => 3, 5 => 9, 6 => 5, 7 => 8, 8 => 9 ); $ids = implode(',', array_keys($display_order)); $sql = "UPDATE categories SET display_order = CASE id "; foreach ($display_order as $id => $ordinal) { $sql .= sprintf("WHEN %d THEN %d ", $id, $ordinal); } $sql .= "END WHERE id IN ($ids)"; echo $sql;
0 0
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- SQL 使用update case when 批量更新
- mysql数据库中case...when...then...end语句的使用
- PHP sql批量更新(CASE WHEN THEN END)
- mysql中case when then 的使用
- sql update set使用case when语句
- update与case when的结合使用
- sql case then || 一条神奇的SQL语句
- Oracle 的case when then语句、cursor游标的使用、动态组织sql语句
- SQL的case when then else end语句的用法
- mysql update和case语句结合
- Case when 与Update语句的使用
- SQL的Case When ... Then ... Else ... End... 语句
- 项目中用到的sql语句(case when...then... end )
- SQL Server和Oracle中case when then 的用法及when like 的使用
- case when then else SQL语句
- (转)URI和URL的区别
- 【VC小项目】-13.0项目导引(1)
- WPF控件开源资源
- xml解析-dom范例
- js call() apply()
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- 利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。 给定一个stri
- 如何学习java,自学还是培训?
- 关于循环移除数组中的元素
- OGNL中的#、%和$符号的用法
- 浅谈android中异步加载之"取消异步加载"
- Android studio 修改项目包名
- 打开安卓项目下的activity
- session入mysql