mysql更新语句很简单,更新多条数据的某个字段为相同值,一般这样写:
UPDATE table_name SET field = 'value' WHERE condition;
更新多条数据为不同值,你可以:

foreach ($display_order as $id => $ordinal) {
$sql = "UPDATE categories SET display_order = $ordinal WHERE id = $id";
mysql_query($sql);
}
这样一条条进行,虽然性能差,还容易阻塞。
你也可以用一些SQL的小技巧:

UPDATE table_name
SET field = CASE id
WHEN 1 THEN 'value'
WHEN 2 THEN 'value'
WHEN 3 THEN 'value'
END
WHERE id IN (1,2,3);

然而这样在记录量很大的情况下仍然性能很差,然后我们考虑使用:

REPLACE INTO table_name (id,data) VALUES (1,'2'),(2,'3'),...(x,'y');
INSERT INTO table_name (id,data) VALUES (1,'2'),(2,'3'),...(x,'y') ON DUPLICATE KEY UPDATE data=VALUES(data);

REPLACE INTO  操作本质是对重复的记录先 DELETE 后 INSERT,如果更新的字段不全会将缺失的字段置为缺省值;INSERT INTO 则是只更新重复记录,不会改变其它字段。

如果这样性能仍显不足,我们还可以通过创建临时表来再次提速:

create temporary table tmp(id int(4) primary key,dr varchar(50));
insert into tmp values (0,'gone'), (1,'xx'),...(m,'yy');
update test_tbl, tmp set test_tbl.dr=tmp.dr where test_tbl.id=tmp.id;

创建临时表,更新临时表,从临时表更新。

mysql 批量更新多条记录(且不同值)的实现方法的更多相关文章

  1. mysql语句:批量更新多条记录的不同值[转]

    mysql语句:批量更新多条记录的不同值 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: 帮助 1 UPDATE mytable SET myfield = 'value' WHERE ...

  2. mysql进阶(十四) 批量更新与批量更新多条记录的不同值实现方法

    mysql 批量更新与批量更新多条记录的不同值实现方法 在mysql中批量更新我们可能使用update,replace into来操作,下面详细介绍mysql批量更新与性能. 批量更新 mysql更新 ...

  3. mysql 批量更新与批量更新多条记录的不同值实现方法

    批量更新 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: 代码如下: UPDATE mytable SET myfield = 'value' WHERE other_field = ...

  4. mysql语句:批量更新多条记录的不同值

    mysql更新语句很简单,更新一条数据的某个字段,一般这样写: 1 UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_va ...

  5. mysql 批量更新与批量更新多条记录的不同值实现方法

    作者: 字体:[增加 减小] 类型:转载 时间:2013-10-02 我要评论 在mysql中批量更新我们可能使用update,replace into来操作,下面小编来给各位同学详细介绍mysql ...

  6. 【转】【MySql】Update批量更新与批量更新多条记录的不同值实现方法

    批量更新 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other ...

  7. 转载 【MySql】Update批量更新与批量更新多条记录的不同值实现方法

    批量更新 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other ...

  8. 【MySql】Update批量更新与批量更新多条记录的不同值实现方法

    mysql更新语句很简单,更新一条数据的某个字段,一般这样写: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_valu ...

  9. mysql 批量更新

    bs_user 表,我们叫他 bu表, 字段user_id,len_id, think_wellUser 表,我们简称为tw表,中的user_id ,len_id 其中tw表的user_id 是bu表 ...

随机推荐

  1. Math函数的"四舍五入",Floor,Ceiling,Round的一些注意事项!

    1.Math.Round:四舍六入五取偶 引用内容 Math.Round(0.0) //0Math.Round(0.1) //0Math.Round(0.2) //0Math.Round(0.3) / ...

  2. 第四篇:Elaticsearch 安装配置

    Elasticsearch 是一个分布式搜索引擎,相似产品还有solr-cloud .Elasticsearch 相对于solr 而言,随着容量的变化,效率会比solr高,特点就是速度快.ES使用者众 ...

  3. mediawiki常用设置

    修改mediawiki的logo图标 在LocalSettings.php文件中添加或修改以下代码: //$wgLogo             = "$wgStylePath/common ...

  4. 深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念

    本篇文章是对单一入口.MVC.ORM.CURD.ActiveRecord概念进行了详细的分析介绍,需要的朋友参考下     MVC MVC是一个设计模式,它强制性的使应用程序的输入.处理和输出分开.使 ...

  5. oracle定时job

    转载自:http://www.cnblogs.com/hoojo/p/oracle_procedure_job_interval.html Oracle job procedure 存储过程定时任务 ...

  6. 使用.NET Reflector 查看Unity引擎里面的DLL文件

    转载标注来源哦! 原地址在这里!在这里. 当你查看unity里面API的时候.是不是有时候追踪了一两步就碰到DLL文件走不下去了呢?非常是不爽吧. 这样的问题我也是常常碰到.这是人家商业引擎不想让你看 ...

  7. vim杂记

    "clang-completelet g:clang_complete_copen=1let g:clang_periodic_quickfix=1let g:clang_snippets= ...

  8. hdu 3394(点双连通)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3394 思路:题目的意思是要求无向图中的冲突边和不需要边的条数,如果一个块中有多个环,则该块中的每条边都 ...

  9. openwrt源码下载移植

    openwrt源码下载移植 一.源码下载 1.1下载 由于本人多次尝试从SVN代码地址下载代码,出现无法访问因此这里选择从Git代码地址进行下载.在linux系统命令终端输入 git clone gi ...

  10. OpenCV学习笔记十五:opencv_features2d模块

    一,简介: 该库用于2D特征检测,描述与匹配.