mysql update 批量修改数据_MySQL 中实现数据的批量修改
今天遇到一个数据的批量更新,查了一下官方文档,还好找到了。英文东东,大家耐心哈
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 中实现数据的批量修改相关推荐
- mysql约束添加删除数据_mysql中约束的添加,修改,与删除
MySQL中的约束,添加约束,删除约束,以及其他的一些修饰: 一.NOT NULL(非空约束) 添加非空约束 1)建表时直接添加 CREATE TABLE t_user(user_id INT(10) ...
- mysql中如何统计数据_mysql中的数据统计方法
1 数据统计 使用COUNT()函数计算表中的数据数目(比如emp表中的员工数目) mysql> select count(*) from emp; 查询结果如下: +----------+ | ...
- mysql 导入数据库sql语句_mysql中导入数据与导出数据库sql语句
本文章来详细介绍关于mysql中导入数据与导出数据库sql语句,在mysql中常用的导入与导出数据的命令有source与mysqldump大家可参考. 1.例1:连接到本机上的MYSQL 首先在打开D ...
- mysql 中文字段报错_mysql 中 王数据表中插入中文字段报错:mysql insert into a values(202,王一); ERROR 1366 (HY000): Incorr...
报错信息: mysql> insert into a values(202,"王一"); ERROR 1366 (HY000): Incorrect string value ...
- mysql如何删除数据_MySQL中删除数据的两种方法
1. 在MySQL中有两种方法可以删除数据: 一种是delete语句,另一种是truncate table语句. delete语句可以通过where对要删除的记录进行选择,而使用truncate ta ...
- mysql update select 从查询结果中更新数据
# update select 语句(注意:必须使用inner join) 语法 : UPDATE a INNER JOIN ( SELECT yy FROM b ) c ON a.id = c.id ...
- mysql更新数据_MySQL更新表数据
更新数据是使用数据库时最重要的任务之一. 在本教程中,您将学习如何使用MySQL UPDATE语句来更新表中的数据. 1. MySQL UPDATE语句简介 我们使用UPDATE语句来更新表中的现有数 ...
- 4、MySQL——向数据表中插入数据,修改数据表中的数据,数据表删除操作
目录 一.数据表插入操作:INSERT 1. 给表中的所有字段插入数据 2.给表中的个别字段插入数据 3.向数据表中批量插入多条数据 二.数据表修改操作:UPDATE 1.修改所有字段的数据 2.修改 ...
- mysql中触发器 删除表数据_MySQL删除表数据
在本教程中,您将学习如何使用MySQL DELETE语句从单个表中删除数据. 1. MySQL DELETE语句介绍 要从表中删除数据,请使用MySQL DELETE语句.下面说明了DELETE语句的 ...
最新文章
- 原生JS和jQuery操作DOM的区别小结
- C++ STL 基本使用Win32 版
- 无法启动baiMicrosoft Office Outlook。无法打开duOutlook窗口
- 前端学习(3230):React中的非受控组件
- Linux declare命令、Linux tail 命令
- Overview of HEVC之2 Slices and Tiles
- 书评-YDKJSthis与对象原型
- POST形式 soapUI调用WebService的restful接口,传入json参数,并且返回json
- Shellex:针对shellcode的转换与处理工具
- 22. 协程与Python中的多任务异步协程
- struct files_struct和struct fdtable
- JTAG、SBW、BSL 三种接口的区别
- APP变现渠道该如何选择猫眼聚合SDK用经验为您解答
- 入职快两个月的一些感悟
- 《围城》读后感:你的心是一座城,愿你城中有幸福
- 魔兽时间 一键宏 输出的原理与笔记
- 阿里程序员常用的 15 款开发者工具
- 论文修改建议 (JiangXY 20211108 突出自己的优势指标)
- CSS样式内联选择器选择器优先级伪类顺序
- 研究生宿舍大盘点!令人羡慕的研究生宿舍来了!