`
fanjf
  • 浏览: 290941 次
  • 性别: 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 Update批量更新的几种方式

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

    Oracle导Mysql适用于百、千万级别数据迁移

    使用人员可以指定迁移数据库类型 如:(orcal,sqlServer,csv 迁移至mysql) 2.在迁移数据库时,可以只迁移指定字段. 3.开发多任务的平台,按权重去执行任务,如:权重为1,1,2,3,4 那么1,1的权重一起执行,执行完毕后2 ...

    mysql快速批量生成执行脚本

    mysql快速批量生成执行脚本 使用一些日常sql,快速 简单的创建一些批量生成脚本 如:批量修改字段类型 或者在所有表中创建添加字段脚本 数据迁移或者批量生成脚本sql使用

    Mysql中批量替换某个字段的部分数据(推荐)

    MYSQL中批量替换某个字段的部分数据,具体介绍如下所示: 1.修改字段里的所有含有指定字符串的文字 UPDATE 表A SET 字段B = replace(字段B, 'aaa', 'bbb') example: update table set url= replace(url, 'aaa', '...

    批量操作:C#SQL批量操作用于SQL Server,SQL Azure,SQL Compact,MySQL和SQLite的高性能C#批量插入,更新,删除和合并

    提高SQL的插入,更新,删除和合并性能,并克服SqlBulkCopy的限制稽核区分大小写实体数据源/ Lambda映射产值和更多...可扩展SQL Server-基准运作方式1,000行10,000行100,000行1,000,000行插6毫秒25毫秒200毫秒2,000...

    Shell脚本中执行sql语句操作mysql的5种方法

    本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考。对于脚本输出的结果美化,需要进一步完善和调整。以下为具体的示例及其方法。 1、将SQL语句直接嵌入到shell脚本文件中 代码...

    纯真ip数据库MySQL版

    sunwe(云飞扬)转制 1,数据来源于QQip数据库纯真版. 2,本数据包包含全面,包括...3,另外,本数据包另附转化好的 纯真ip数据文本文件.(已经经过空格批量替换和插入间隔符',' 这样可以方便直接导入其他类型的数据库)

    数据库SQL知识点总结、代码及练习题代码

    1.数据库的创建修改批量插入等基本操作及sql文件 2.数据表的约束、查询及sql文件 3.SQL server函数及sql文件 常量变量函数 4.关于cascade使用的sql文件 删除重复行只留一行的sql文件 5.数据表操作的习题课1和2的sql...

    使用phpMyAdmin批量修改Mysql数据表前缀的方法

    今天我要介绍的是相对简单的批量修改数据库中表前缀的方法,适用于修改数据库中相同前缀且数据表较多的情况。 此例中假定修改名为“www_sdck_cn”的数据库中前缀为“phpcms_”的表,并将所有符合条件表的前缀修改为...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    13-批量修改MySQL服务引擎的多种方案 14-有关MySQL服务存储引擎的面试题等说明 第十一部 MySQL读写分离开发实现及软件实现-物理备份-高可用(已经包含有5节视频+文档资料) 01-amoeba读写分离实现技术分享.avi 02-...

    动软代码生成器C#连接mysql三层代码模板--修改版

    2、部分的 SqlParameter 修改为 MySqlParameter 3、获取前几行数据时,修改为 limit 4、参数赋值时,从@修改为? 动软代码必须修改 “工具”-“选项”弹出窗 后,点击 ”代码生成设置“-”字段类型映射“-”参数...

    VC6.0下开发的Mysql数据库访问软件

    实现了Mysql数据库的访问,这个软件里比较特殊的是,没有使用MFC中list来显示多条数据,是用其他控件,Edit、Combo BOx等来显示数据,每次只操作一条数据记录,当然想需要批量添加数据和显示数据只需稍加修改,...

    mysql高级视频教程百度云(2019).txt

    50.MySQL高级_批量插入数据脚本.avi 49.MySQL高级_慢查询日志.avi 48.MySQL高级_为排序使用索引OrderBy优化.avi 47.MySQL高级_in和exists.avi 46.MySQL高级_小表驱动大表.avi 45.MySQL高级_索引优化答疑...

    mysql基本语法,增删改查大全总结,以及常用的sql语句总结

    mysql语法大全总结,内含DDL,DML,DQL,DCL等语句,可作为工作学习的小字典,随时查看学习,查询所有数据库、查询当前数据库、创建数据库、删除数据库、切换数据库、查询当前数据库的所有表、查看指定表结构、查询指定...

    尚硅谷Java视频教程_MySQL高级视频

    尚硅谷_MySQL高级_批量插入数据脚本 · 51.尚硅谷_MySQL高级_用Show Profile进行sql分析 · 52.尚硅谷_MySQL高级_全局查询日志 · 53.尚硅谷_MySQL高级_数据库锁理论概述 · 54.尚硅谷_MySQL高级_读锁案例讲解 ...

    C#连接操作MySQL数据库进行添加、修改、删除、查询等操作的演示

    鉴于MySQL数据库的流行与强大,决定多学习使用。...提供添加、修改、删除用户功能,同时,为了测试MySQL数据库的访问性能,提供批量数量添加测试功能,如批量添加10000个用户,看看数据库的执行效率。界面作如下布

    php+mysqli实现批量执行插入、更新及删除数据的方法

    下面的代码只是批量插入数据,事实上,插入数据、更新数据、删除数据等可以混合一起执行。查询时使用该函数,读取数据有点不太一样,具体参考如下代码: <?php //1、创建数据库连接对象 $mysqli = new MySQLi(...

    oracle到mysql建表语句迁移

    oracle向mysql建表语句的迁移。 直接表结构的生成sql脚本

    Adminers MYSQL/SQLite管理工具.rar

     5:能够批量执行SQL语句。  6:支持将数据,表结构,视图导成SQL或CSV。  7:能够外键关联打印数据库概要。  8:能够查看进程和关闭进程。  9:能够查看用户和权限并修改。  10:管理事件和表格...

Global site tag (gtag.js) - Google Analytics