mysql批量操作语句

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

1、.replace into 批量更新

   replace into t_student(id,dr) values (1,'2'),(2,'3'),...(x,'y');

例子:

replace into t_student

            (`Id`,`Author`,`CreatedTime`,`UpdatedTime`)

         values 

            (1,'王五','2016-12-12 12:20','2016-12-12 12:20'),

            (2,'张三','2016-12-12 12:20','2016-12-12 12:20');    

2、insert into ...on duplicate key update批量更新
  insert into t_student(id,dr) values (1,'2'),(2,'3'),...(x,'y') on duplicate key update dr=values(dr);

  例子:

insert into t_student

        (`Id`,`Author`,`CreatedTime`,`UpdatedTime`) 

    values 

        (1,'张三','2017-12-12 12:20','2017-12-12 12:20'),

        (2,'王五','2017-12-12 12:20','2017-12-12 12:20') 

    on duplicate key update 

         Author=values(Author),

         CreatedTime=values(CreatedTime),

         UpdatedTime=values(UpdatedTime); 

replace into  和 insert into on duplicate key update的不同在于:

      replace into 操作本质是对重复的记录先delete 后insert,如果更新的字段不全会将缺失的字段置为缺省值,用这个要悠着点否则不小心清空大量数据可不是闹着玩的。
       insert into 则是只update重复记录,不会改变其它字段。
3.创建临时表,先更新临时表,然后从临时表中update

 create temporary table tmp(

        id int(4) primary key,

        dr varchar(50)

   );

    insert into tmp values  (0,'gone'), (1,'xx'),...(m,'yy');

    update 

            t_student, tmp 

    set 

            t_student.dr=tmp.dr 

     where 

           t_student.id=tmp.id;

   注意:这种方法需要用户有temporary 表的create 权限。
4、使用mysql 自带的语句构建批量更新
    mysql 实现批量 可以用点小技巧来实现:

UPDATE t_stuent
        SET name= CASE id 
            WHEN 1 THEN '赵六' 
            WHEN 2 THEN '马三'
            WHEN 3 THEN '王五'
        END
    WHERE id IN (1,2,3)
    这句sql 的意思是,更新dingdan 字段,如果id=1 则dingdan 的值为3,如果id=2 则dingdan 的值为4……
    where部分不影响代码的执行,但是会提高sql执行的效率。确保sql语句仅执行需要修改的行数,这里只有3条数据进行更新,而where子句确保只有3行数据执行。   
    例子:
UPDATE t_student
        SET Author = CASE id 
            WHEN 1 THEN '黄飞鸿' 
            WHEN 2 THEN '方世玉'
            WHEN 3 THEN '洪熙官'
        END
    WHERE id IN (1,2,3)
    如果更新多个值的话,只需要稍加修改:
UPDATE categories
        SET dingdan = CASE id 
            WHEN 1 THEN 3 
            WHEN 2 THEN 4 
            WHEN 3 THEN 5 
        END, 
        title = CASE id 
            WHEN 1 THEN 'New Title 1'
            WHEN 2 THEN 'New Title 2'
            WHEN 3 THEN 'New Title 3'
        END
    WHERE id IN (1,2,3)

   例子:UPDATE book
        SET Author = CASE id 
            WHEN 1 THEN '黄飞鸿2' 
            WHEN 2 THEN '方世玉2'
            WHEN 3 THEN '洪熙官2'
        END,
        Code = CASE id 
            WHEN 1 THEN 'HFH2' 
            WHEN 2 THEN 'FSY2'
            WHEN 3 THEN 'HXG2'
        END
    WHERE id IN (1,2,3)


本文作者: java乐园

本文来自云栖社区合作伙伴“JAVA乐园”,了解相关信息可以关注“JAVA乐园

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
SQL 存储 缓存
SQL语句在MySQL中是如何执行的
SQL语句在MySQL中是如何执行的
45 0
|
SQL 存储 缓存
一文搞懂MySQL中一条SQL语句是如何执行的
一文搞懂MySQL中一条SQL语句是如何执行的
|
12月前
|
SQL 存储 缓存
MySQL 批量操作,一次插入多少行数据效率最高?
MySQL 批量操作,一次插入多少行数据效率最高?
|
SQL 缓存 关系型数据库
MySQL 批量操作,一次插入多少行数据效率最高?(2)
MySQL 批量操作,一次插入多少行数据效率最高?
147 0
|
SQL 关系型数据库 MySQL
软件开发入门教程网之MySQL GROUP BY 语句
软件开发入门教程网之MySQL GROUP BY 语句
|
SQL 关系型数据库 MySQL
软件开发入门教程网 之MySQL DELETE 语句
软件开发入门教程网 之MySQL DELETE 语句
|
存储 SQL 关系型数据库
MySQL数据库系列(八)-------高级语句二
可以被当作是虚拟表或存储查询
77 0
MySQL数据库系列(八)-------高级语句二
|
SQL 关系型数据库 MySQL
|
SQL 缓存 关系型数据库
MySQL语句执行过程
MySQL语句执行过程
|
SQL 关系型数据库 MySQL
软件开发入门教程网之MySQL GROUP BY 语句
GROUP BY 语句根据一个或多个列对结果集进行分组。 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。