今天遇到一个数据的批量更新,查了一下官方文档,还好找到了。英文东东,大家耐心哈

http://dev.mysql.com/doc/refman/5.7/en/update.html

一般在使用数据编辑的时候:

UPDATE tablename SET field_1='value', field_2='value'[...] WHERE condition_field= 'value'

或者UPDATE tablename SET field_1='value', [field_2...] where condition_field in ('values')

如果更新多条数据为不同的值,怎么做呢?

可能大部分人会这么写:foreach($conditions as $field => $value){

$sql = "UPDATE tablename SET field = $value WHERE id = $id";

mysql_query($sql);

}

这样进行一条一条数据进行更新,这样的效率比较低。

有没有一条sql来进行操作的呢?其实mysql并没有提供直接的方法来操作,大家可以看靠一下官方文档,不过是英文的仔细看一下哦UPDATE tablename SET

field = CASE id

WHERE 1 THEN 'value'

WHERE 2 THEN 'value'

END

WHERE id in (1,2,3)

更新多个字段呢?UPDATE tablename SET

field_1 = CASE id

WHERE 1 THEN 'value'

WHERE 2 THEN 'value'

END,

field_2 = CASE id

WHERE 1 THEN 'value',

WHERE 2 THEN 'value'

END

WHERE id in (1,2,3)

思路大致就是这样的,如果是PHP那么可以参考一下写的方法:/**

* 批量更新数据,必须是二位数组

*

* @param array $data 需要跟新的数据

* 比如:$data['字段名称']['主键ID']=>'value'

*

* @return boolean

*/

public function updateAll($data, $dbname) {

if (empty($data)) {

return false;

}

$sql = "UPDATE ".$dbname." SET ";

$total = count($data);

$i = 1;

$idsArr = array();

foreach ($data as $field => $val) {

$sql .= " $field = CASE id ";

foreach ($val as $id => $v) {

$sql .= sprintf(" WHEN %d THEN '%s' ", $id, $v);

if (!in_array($id, $idsArr)) {

$idsArr[] = $id;

}

}

if ($i == $total) {

$sql .=" END ";

} else {

$sql .=" END, ";

}

$i++;

}

$ids = implode(',', $idsArr);

$sql .= " WHERE id IN ($ids)";

//TODO 具体执行的方法就自己写了( ̄▽ ̄)"

}

mysql update 批量修改数据_MySQL 中实现数据的批量修改相关推荐

  1. mysql约束添加删除数据_mysql中约束的添加,修改,与删除

    MySQL中的约束,添加约束,删除约束,以及其他的一些修饰: 一.NOT NULL(非空约束) 添加非空约束 1)建表时直接添加 CREATE TABLE t_user(user_id INT(10) ...

  2. mysql中如何统计数据_mysql中的数据统计方法

    1 数据统计 使用COUNT()函数计算表中的数据数目(比如emp表中的员工数目) mysql> select count(*) from emp; 查询结果如下: +----------+ | ...

  3. mysql 导入数据库sql语句_mysql中导入数据与导出数据库sql语句

    本文章来详细介绍关于mysql中导入数据与导出数据库sql语句,在mysql中常用的导入与导出数据的命令有source与mysqldump大家可参考. 1.例1:连接到本机上的MYSQL 首先在打开D ...

  4. mysql 中文字段报错_mysql 中 王数据表中插入中文字段报错:mysql insert into a values(202,王一); ERROR 1366 (HY000): Incorr...

    报错信息: mysql> insert into a values(202,"王一"); ERROR 1366 (HY000): Incorrect string value ...

  5. mysql如何删除数据_MySQL中删除数据的两种方法

    1. 在MySQL中有两种方法可以删除数据: 一种是delete语句,另一种是truncate table语句. delete语句可以通过where对要删除的记录进行选择,而使用truncate ta ...

  6. mysql update select 从查询结果中更新数据

    # update select 语句(注意:必须使用inner join) 语法 : UPDATE a INNER JOIN ( SELECT yy FROM b ) c ON a.id = c.id ...

  7. mysql更新数据_MySQL更新表数据

    更新数据是使用数据库时最重要的任务之一. 在本教程中,您将学习如何使用MySQL UPDATE语句来更新表中的数据. 1. MySQL UPDATE语句简介 我们使用UPDATE语句来更新表中的现有数 ...

  8. 4、MySQL——向数据表中插入数据,修改数据表中的数据,数据表删除操作

    目录 一.数据表插入操作:INSERT 1. 给表中的所有字段插入数据 2.给表中的个别字段插入数据 3.向数据表中批量插入多条数据 二.数据表修改操作:UPDATE 1.修改所有字段的数据 2.修改 ...

  9. mysql中触发器 删除表数据_MySQL删除表数据

    在本教程中,您将学习如何使用MySQL DELETE语句从单个表中删除数据. 1. MySQL DELETE语句介绍 要从表中删除数据,请使用MySQL DELETE语句.下面说明了DELETE语句的 ...

最新文章

  1. 原生JS和jQuery操作DOM的区别小结
  2. C++ STL 基本使用Win32 版
  3. 无法启动baiMicrosoft Office Outlook。无法打开duOutlook窗口
  4. 前端学习(3230):React中的非受控组件
  5. Linux declare命令、Linux tail 命令
  6. Overview of HEVC之2 Slices and Tiles
  7. 书评-YDKJSthis与对象原型
  8. POST形式 soapUI调用WebService的restful接口,传入json参数,并且返回json
  9. Shellex:针对shellcode的转换与处理工具
  10. 22. 协程与Python中的多任务异步协程
  11. struct files_struct和struct fdtable
  12. JTAG、SBW、BSL 三种接口的区别
  13. APP变现渠道该如何选择猫眼聚合SDK用经验为您解答
  14. 入职快两个月的一些感悟
  15. 《围城》读后感:你的心是一座城,愿你城中有幸福
  16. 魔兽时间 一键宏 输出的原理与笔记
  17. 阿里程序员常用的 15 款开发者工具
  18. 论文修改建议 (JiangXY 20211108 突出自己的优势指标)
  19. CSS样式内联选择器选择器优先级伪类顺序
  20. 研究生宿舍大盘点!令人羡慕的研究生宿舍来了!

热门文章

  1. Clojure 学习入门(17)- 异常处理
  2. Samba在Ubuntu12.04安装
  3. VALSE学习(七):跨媒体分析-Cross-Media Analysis and Intelligence
  4. spark 安装与使用 educoder
  5. python编写登录接口_使用python编写一个登录接口
  6. ubuntu linux 系统搭建我的世界基岩版 私服我的世界服务器
  7. SpringBoot 笔记
  8. spring学习--jdbcTemplate - 增删改
  9. cesium 加载科技感
  10. 磁珠 符号_磁珠的主要功能是什么