# ---- 测试数据 ----
# 表1
CREATE TABLE temp_x AS
SELECT 1 AS c_id, 1.11 AS c_amount FROM DUAL
UNION ALL
SELECT 2 AS c_id, 1.22 AS c_amount FROM DUAL;
# 表2
CREATE TABLE temp_y AS
SELECT 1 AS c_id, 1.43 AS c_amount FROM DUAL
UNION ALL
SELECT 2 AS c_id, 1.44 AS c_amount FROM DUAL;
# 查询
SELECT * FROM temp_x;
SELECT * FROM temp_y; # 恢复数据
UPDATE temp_x SET c_amount = 1.11 WHERE c_id = 1;
UPDATE temP_x SET c_amount = 1.22 WHERE c_id = 2;
# 报错 不可执行
UPDATE temp_x a
SET a.`c_amount` = b.c_amount
FROM temp_y b
WHERE a.`c_id` = b.c_id;
# 还是报错
UPDATE temp_x a
SET a.`c_amount` = b.`c_amount`
FROM temp_x a, temp_y b
WHERE a.`c_id` = b.`c_id`;

  可行的办法:

# 方法一 可行
UPDATE temp_x a, temp_y b
SET a.`c_amount` = b.`c_amount`
WHERE a.`c_id` = b.`c_id`;
# 方法二 可行
UPDATE temp_x a
SET a.`c_amount` = (SELECT b.c_amount FROM temp_y b
WHERE b.`c_id` = a.`c_id`)
# 方法三 可行 方法二加强版
UPDATE temp_x a
SET a.c_amount = (SELECT b.c_amount
FROM temp_y b
WHERE b.c_id = a.c_id)
WHERE a.c_id IN (SELECT b.c_id FROM temp_y b);

  其他例子:

# update 一列
UPDATE student s, city c
SET s.city_name = c.name
WHERE s.city_code = c.code;
# update 多列
UPDATE a, b
SET a.title = b.title
a.name = b.name
WHERE a.id = b.id;
# 通过子查询
UPDATE student s
SET s.city_name =
(SELECT NAME FROM city
WHERE CODE = s.city_code);
# 复杂查询
UPDATE a SET
xx = (SELECT b.xxx FROM b WHERE b.id = a.id),
yy = (SELECT b.xxx FROM b WHERE b.id = a.id)
WHERE EXISTS(SELECT b.xxx FROM b WHERE b.id = a.id);
# 优化写法
UPDATE a INNER JOIN b ON a.id = b.id
SET a.xx = b.xxx
a.yy = b.xxx;

END 2018-05-29 17:01:00

MySQL学习笔记:从一个表update到另外一个表的更多相关文章

  1. Mysql学习笔记(三)对表数据的增删改查。

    正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...

  2. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  3. Mysql学习笔记(一)数据类型

    原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型     Mysql数据类型             含义(有符号)     tinyint(m ...

  4. MySQL学习笔记-锁相关话题

    在事务相关话题中,已经提到事务隔离性依靠锁机制实现的.在本篇中围绕着InnoDB与MyISAM锁机制的不同展开,进而描述锁的实现方式,多种锁的概念,以及死锁产生的原因.   Mysql常用存储引擎的锁 ...

  5. MySQL学习笔记-事务相关话题

    事务机制 事务(Transaction)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都 ...

  6. 数据库MySQL学习笔记高级篇

    数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...

  7. MySql学习笔记四

    MySql学习笔记四 5.3.数据类型 数值型 整型 小数 定点数 浮点数 字符型 较短的文本:char, varchar 较长的文本:text, blob(较长的二进制数据) 日期型 原则:所选择类 ...

  8. 一千行MySQL学习笔记 (转)

    出处:  一千行MySQL学习笔记 /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权 ...

  9. mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记

    mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...

  10. Mysql学习笔记(二)数据类型 补充

    原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...

随机推荐

  1. RadioButton如何隐藏和替换

    http://q.cnblogs.com/q/60738/ 用Jquery写的,可以实现隐藏功能,代码如下: 1 <%@ Page Language="C#" AutoEve ...

  2. Qt 状态栏设置

    版权声明 该文章原创于Qter开源社区(www.qter.org),作者yafeilinux,转载请注明出处!     导语 在程序主窗口QMainWindow中,主要包含菜单栏,工具栏,中心部件和状 ...

  3. 安装mysql-5.6版本步骤与卸载

    官网下载完解压后: 1.环境变量配置Path   D:\mysql-5.6.40-winx64\bin(你的mySql5.6的路径到bin)2.找到D:\mysql-5.6.40-winx64文件中的 ...

  4. Ansible3: ansible.cfg配置说明

    常用配置 Ansible默认安装好后有一个配置文件/etc/ansible/ansible.cfg,该配置文件中定义了ansible的主机的默认配置部分,如默认是否需要输入密码.是否开启sudo认证. ...

  5. NATS_12:NATS Streaming详解

    NATS Streaming NATS Streaming是一个以NATS为驱动的数据流系统且它的源码也是由Golang语言编写的.其中NATS Streaming服务是一个可执行的文件名为:nats ...

  6. codevs 2147 数星星

    2147 数星星 http://codevs.cn/problem/2147/ 题目描述 Description 小明是一名天文爱好者,他喜欢晚上看星星.这天,他从淘宝上买下来了一个高级望远镜.他十分 ...

  7. 并发编程(三) IO模型

    五 IO模型 常用的IO模型有4种: 阻塞IO 非阻塞IO IO多路复用 异步IO 不常用的有: 驱动信号 5.1 阻塞IO.非阻塞IO 阻塞IO:进程不能做其他的事情 非阻塞IO:等待数据无阻塞 阻 ...

  8. 【leetcode 简单】 第一百一十一题 可怜的小猪

    有1000只水桶,其中有且只有一桶装的含有毒药,其余装的都是水.它们从外观看起来都一样.如果小猪喝了毒药,它会在15分钟内死去. 问题来了,如果需要你在一小时内,弄清楚哪只水桶含有毒药,你最少需要多少 ...

  9. HDU 3065 病毒侵袭持续中 (AC自动机)

    题目链接 Problem Description 小t非常感谢大家帮忙解决了他的上一个问题.然而病毒侵袭持续中.在小t的不懈努力下,他发现了网路中的"万恶之源".这是一个庞大的病毒 ...

  10. Django rest framwork-CMDB API实战

    一.序列化 serializers.py from rest_framework import serializers from web_manage import models class Asse ...