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. java - day13 - UnionPay

    银行功能实现,主要为抽象类及接口的运用 package com.javatest.bankimple; /* UnionPay */ //银联接口 public interface UnionPay ...

  2. AJAX动态加载评论

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. eclipse 断点类别

    行断点 行断点位于一般方法内,双击代码行左边就可以设置行断点: 行断点可以设置条件,右键断点-properties: 1设置效果是第几次到达时暂停,图中所示是当第三次到达时暂停 2是开启条件断点 3是 ...

  4. Spring @Transactional

    在service类前加上@Transactional,声明这个service所有方法需要事务管理.每一个业务方法开始时都会打开一个事务. Spring默认情况下会对运行期例外(RunTimeExcep ...

  5. 解决PHP编译cURL的reinstall the libcurl问题

    今天正好要用到PHP的curl功能,发现服务器上的PHP并没有配置curl,进而查询PHP官方文档,得知编译PHP时需要带上 –with-curl参数,才能把curl模块编译进去.我现在PHP已经编译 ...

  6. 虚拟化笔记05 OpenFiler configuration

    5.OpenFiler configuration 登录Openfiler 步骤1:安装 FireFox 步骤2:通过FireFox以HTTPS://server-ip:446 远程访问OpenFil ...

  7. php windows 扩展redis

    一:客户端安装redis (1)下载地址:https://github.com/dmajkic/redis/downloads 根据电脑是多少位的使用对应的文件,如我的是64bit,那么我就选择64b ...

  8. 编译包中的 Servlet

    编译包中的类与编译其他的类没有什么大的不同.最简单的方法是让您的 java 文件保留完全限定路径,如上面提到的类,将被保留在 com.myorg 中.您还需要在 CLASSPATH 中添加该目录. 假 ...

  9. CentOS下使用MyTop实时监控MySQL

    CentOS下使用MyTop实时监控MySQL MyTop的项目页面为:http://jeremy.zawodny.com/mysql/mytop/ MyTop安装 $ yum -y install ...

  10. Android-ViewPagerIndicator框架使用——LinePageIndicator

    前言:LinePageIndicator类似CirclePageIndicator,只是将圆点指示变成了长条指示. 一:使用是定义的布局文件simple_lines : <LinearLayou ...