MySQL 中实现数据的批量修改
2016-03-02 21:43
706 查看
今天遇到一个数据的批量更新,查了一下官方文档,还好找到了。英文东东,大家耐心哈 http://dev.mysql.com/doc/refman/5.7/en/update.html 一般在使用数据编辑的时候:
如果更新多条数据为不同的值,怎么做呢?
可能大部分人会这么写:
有没有一条sql来进行操作的呢?其实mysql并没有提供直接的方法来操作,大家可以看靠一下官方文档,不过是英文的仔细看一下哦
(官方文档:http://dev.mysql.com/doc/refman/5.7/en/update.html)
本文出自 “追梦” 博客,请务必保留此出处http://dreameng.blog.51cto.com/1187899/1746917
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并没有提供直接的方法来操作,大家可以看靠一下官方文档,不过是英文的仔细看一下哦
(官方文档:http://dev.mysql.com/doc/refman/5.7/en/update.html)
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 具体执行的方法就自己写了( ̄▽ ̄)" }
本文出自 “追梦” 博客,请务必保留此出处http://dreameng.blog.51cto.com/1187899/1746917
相关文章推荐
- MySQL 忘记密码:skip-grant-tables
- MySQL 慢查询日志
- 浅谈MySQL中优化sql语句查询常用的30种方法
- jdbc连接mysql的方法
- MySql “Row size too large (> 8126)”
- mysql忽略主键冲突,避免重复插入的几种方式
- 如何修改WAMP中mysql默认空密码
- MySQL SHOW INDEX语法的实际应用
- Exception in thread main com.mysql.jdbc.CommunicationsException
- HIVE 安装系列(3)配置HIVE 使用Mysql作为元数据的数据库
- mysql阅读笔记六
- Hibernate连接MySQL
- MySQL体系结构
- mysql 参数调优
- MySQL添加字段和修改字段的方法
- MySQL核心知识要点
- MySQL核心知识要点
- mysql常用操作
- MySQL优化
- MySQL安装(图文详解)