mysql批量操作语句

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

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');    
AI 代码解读

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); 
AI 代码解读

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;
AI 代码解读

   注意:这种方法需要用户有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)
AI 代码解读
    这句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)
AI 代码解读
    如果更新多个值的话,只需要稍加修改:
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)
AI 代码解读


本文作者: java乐园

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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
73514
分享
相关文章
SQL语句编写的练习(MySQL)
这篇文章提供了MySQL数据库中关于学生表、课程表、成绩表和教师表的建表语句、数据插入示例以及一系列SQL查询练习,包括查询、排序、聚合和连接查询等操作。
SQL语句在MySQL中是如何执行的
SQL语句在MySQL中是如何执行的
89 0
MySQL 批量操作,一次插入多少行数据效率最高?
MySQL 批量操作,一次插入多少行数据效率最高?
Mysql 根据同一字段实现一条语句部分正序部分倒序的解决方案
Mysql 根据同一字段实现一条语句部分正序部分倒序的解决方案
346 0
Mysql 根据同一字段实现一条语句部分正序部分倒序的解决方案
MySQL 如何使用SQL语句获取表结构和获取全部表名
MySQL 如何使用SQL语句获取表结构和获取全部表名
413 0
MySQL 如何使用SQL语句获取表结构和获取全部表名
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等