`
fanjf
  • 浏览: 329741 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

mysql 批量修改数据的SQL

 
阅读更多

对于同一张表修改一批数据,等于另一批数据;或者对于两张表,修改A表一批数据,等于B表的一批数据。
oracle在这方面做到很好,SQL语法也比较简单,但Mysql做的不好,不是不能做,只是比较麻烦。

首先准备两张表:
emp: empno,ename,deptno,sal;(含义为员工编号,姓名,部门编号,工资)
myemp:myid,myname,deptno,sal; (含义为员工编号,姓名,部门编号,工资)

emp.empno 与 myemp.myid关联。

问题:
将emp表中 部门编号为10,主键empno等于myemp表中的myid,所有人员的【姓名,工资】批量同步过去,只能写一个语句。
 

下面是测试用的脚本:

SQL语句:

create table emp  ( 
    empno      int(4), 
    ename varchar(50), 
    deptno varchar(5),
    sal     int(8) 

 
create table myemp (
    myid      int(4), 
    myname varchar(50), 
    deptno varchar(5),
    sal     int(8) 

)

insert into emp(empno,ename,deptno,sal) values ('1', '张三', '10', 1000);
insert into emp(empno,ename,deptno,sal) values ('2', '李四', '10', 2000);
insert into emp(empno,ename,deptno,sal) values ('3', '王五', '10', 3000);
insert into emp(empno,ename,deptno,sal) values ('4', '赵六', '20', 4000);
 


insert into myemp(myid,myname,deptno,sal) values ('1', 'zhangsan', '10', null); 
insert into myemp(myid,myname,deptno,sal) values ('2', 'lisi', '10', null);
insert into myemp(myid,myname,deptno,sal) values ('3', 'wangwu', '10', null);
insert into myemp(myid,myname,deptno,sal) values ('4', 'zhaoliu', '20', 4000);



最初想法是:

update myemp m

set m.sal = (select e.sal from emp e where e.deptno >'10' and m.myid = e.empno),

m.myname = (select e.ename from emp e where e.deptno >'10' and m.myid = e.empno);

实际上,这样mysql会报错。

Error Code : 1093
You can't specify target table 'a' for update in FROM clause
意思是,要修改的表,就不能在后面子查询语句中使用。


所以正确的方法:

update myemp as a inner join emp as b on a.myid=b.empno
set a.sal= b.sal,a.myname = b.ename
where b.deptno ='10'

分享到:
评论

相关推荐

    mysql批量修改表前缀

    下面将详细介绍如何在MySQL中进行批量修改表前缀的操作。 首先,我们需要一个能够执行SQL脚本的工具,比如PHPMyAdmin、MySQL命令行客户端或者通过PHP编写一个脚本来实现。在这个案例中,提供了一个名为"sql批量修改...

    批量添加、修改、删除sql语句.docx

    在MySQL中,我们可以使用UPDATE语句来批量修改数据。例如,我们可以使用以下语句批量修改多条记录: ```sql UPDATE product_label SET pid = 2, identify = 'new_label' WHERE id IN (1, 2, 3); ``` 这条语句将...

    mysql 批量更新及效率对比

    MySQL 批量更新的高效方法 MySQL 批量更新是指在 MySQL 数据库中批量更新多条记录的操作。这种操作在实际应用中非常常见,例如批量更新用户信息、订单状态等。然而,批量更新的效率问题一直是一个棘手的问题。近期...

    Java实现批量向mysql写入数据的方法

    3. mysql数据库的基本操作:mysql数据库提供了基本的数据操作,如新增、删除、修改和查询等操作。通过使用JDBC,可以实现这些基本操作,例如在本文中,我们使用了insert into语句向mysql数据库中插入数据。 4. Java...

    magento产品名称及描述批量修改sql

    传统的后台操作对于大量产品来说效率较低,这时我们可以通过编写SQL语句来实现批量修改,以提高工作效率。 在Magento中,产品信息存储在数据库中,主要涉及到`catalog_product_entity`、`catalog_product_entity_...

    SQL Server转换为MySQL工具

    有时,由于业务迁移、成本优化或者技术栈的变化,用户可能需要将SQL Server的数据转换到MySQL中。这时,“SQL Server转换为MySQL工具”就显得尤为重要。 这个工具的主要功能就是帮助用户高效、准确地将SQL Server中...

    sql.rar_mysql批量附加数据库说明_sql

    在SQL世界中,数据库管理是一项核心任务,而批量附加数据库的操作尤其在大型系统或需要频繁迁移数据的环境中显得尤为重要。本教程将详细讲解如何使用MySQL进行批量附加数据库,并结合提供的"批量附加数据库.sql"文件...

    Mysql Update批量更新的几种方式

    但是,如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?刚开始你可能会想到使用循环执行多条UPDATE语句的方式,就像以下的python程序示例: for x in xrange(10): sql = ''' UPDATE ...

    使用SQL语句批量更新数据.rar

    本资料“使用SQL语句批量更新数据.rar”将深入探讨如何高效地使用SQL批量更新数据库中的记录。 一、SQL批量更新基础 1. UPDATE语句:批量更新的基础是SQL的UPDATE语句。基本语法如下: ```sql UPDATE 表名 SET ...

    SpringBoot整合Mybatis连接SQL Server 跨库批量插入

    本篇将深入探讨如何在Spring Boot项目中整合Mybatis,实现对SQL Server数据库的跨库批量插入操作。 首先,我们需要在Spring Boot项目中引入相关的依赖。对于Mybatis的支持,我们需要添加Mybatis和其Spring Boot ...

    Oracle数据库sql转换mysql数据库工具

    "Oracle数据库sql转换mysql数据库工具" 提供了解决这一问题的解决方案,允许用户将Oracle数据库中的SQL语句或数据结构转换为MySQL兼容的格式。 在数据库迁移过程中,这样的工具至关重要,因为它可以简化工作流程,...

    MySQL批量更新:6种方式对比,你知道哪种最快吗?.zip

    通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...

    mysql_批量数据脚本..

    标题“mysql_批量数据脚本..”提示我们这个压缩包可能包含了用于MySQL数据库进行批量数据操作的SQL脚本。在数据库管理中,批量数据处理是非常常见的需求,它可以帮助我们高效地插入、更新或删除大量记录,尤其在初始...

    Mysql客户端:HeidiSQL7.0-

    3. **数据编辑和浏览**:用户可以直接在HeidiSQL中查看和编辑数据库中的表格数据,支持批量编辑和导入导出功能。 4. **SQL查询工具**:提供了强大的SQL编辑器,支持自动完成、错误检查和执行计划预览,帮助用户编写...

    ecshop批量修改价格

    3. **数据库操作**: 商品的价格信息存储在数据库中,批量修改价格时,需要对`ecs_goods`等相关的数据表执行SQL查询和更新操作。这涉及到SQL语句的编写,如SELECT用于筛选商品,UPDATE用于更新价格。 4. **用户交互...

    批量替换msyql字段内容

    在MySQL中,这种操作可以通过SQL语句配合正则表达式来实现,这正是"批量替换mysql字段内容"这一主题的核心。批量替换对于优化数据、修复错误或者统一格式等场景非常有用。 首先,我们需要了解MySQL中的`REPLACE()`...

    利用poi获取excel数据批量插入大量数据到mysql

    本教程将详述如何使用Apache POI库读取Excel数据,并通过Java的JDBC接口批量插入到MySQL数据库中。Apache POI是Java平台上的一个开源项目,它允许程序员创建、修改和显示Microsoft Office格式的文件,其中包括Excel...

    magento导出数据sql

    首先,`magento导出数据sql`是指使用SQL语句来提取Magento数据库中的数据。这通常涉及到备份、分析或迁移数据到其他系统。在Magento中,数据主要存储在MySQL数据库中,因此我们可以通过以下几种方式来导出数据: 1....

    批量更新两种方法实践

    在这个主题中,我们通常会遇到两种主要的方法:使用SQL语句批量更新和利用编程语言提供的数据处理库进行批量更新。 首先,SQL批量更新是最直接的方式,适用于对数据库的操作有直接控制的情况。例如,可以编写一个...

    mysql快速批量生成执行脚本

    在MySQL数据库管理过程中,经常需要对多个表进行批量操作,例如批量修改字段类型、在所有表中添加新字段等。这些任务如果手动一个一个地去完成,将会非常耗时且容易出错。为了提高效率并减少错误,我们可以利用SQL...

Global site tag (gtag.js) - Google Analytics