本文介绍mysql多表 update在实践中几种不同的写法。

假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price;另外一张表是ProductPrice表,我们要将ProductPrice表中的价格字段Price更新为Price表中价格字段的80%。
在Mysql中我们有几种手段可以做到这一点,一种是update table1 t1, table2 ts ...的方式:
复制代码 代码如下:

UPDATE product p, productPrice pp
SET pp.price = pp.price * 0.8
WHERE p.productId = pp.productId
AND p.dateCreated < '2004-01-01'

另外一种方法是使用inner join然后更新:
复制代码 代码如下:

UPDATE product p
INNER JOIN productPrice pp
ON p.productId = pp.productId
SET pp.price = pp.price * 0.8
WHERE p.dateCreated < '2004-01-01'

另外我们也可以使用left outer join来做多表update,比方说如果ProductPrice表中没有产品价格记录的话,将Product表的isDeleted字段置为1,如下sql语句:
复制代码 代码如下:

UPDATE product p
LEFT JOIN productPrice pp
ON p.productId = pp.productId
SET p.deleted = 1
WHERE pp.productId IS null

另外,上面的几个例子都是两张表之间做关联,但是只更新一张表中的记录,其实是可以同时更新两张表的,如下sql:
复制代码 代码如下:

UPDATE product p
INNER JOIN productPrice pp
ON p.productId = pp.productId
SET pp.price = pp.price * 0.8,
p.dateUpdate = CURDATE()
WHERE p.dateCreated < '2004-01-01'

两张表做关联,更新了ProductPrice表的price字段和Product表字段的dateUpdate两个字段。

转载于:https://www.cnblogs.com/lexiaofei/p/mysql.html

Mysql的跨表更新相关推荐

  1. mysql支持跨表delete删除多表记录

    前几天写了Mysql跨表更新的一篇总结,今天我们看下跨表删除.  在Mysql4.0之后,mysql开始支持跨表delete.  Mysql可以在一个sql语句中同时删除多表记录,也可以根据多个表之间 ...

  2. sql跨表查询_跨表查询经常有,何为跨表更新?

    有点 SQL 基础的朋友肯定听过 「跨表查询」,那啥是跨表更新啊? 背景 项目新导入了一批人员数据,这些人的有的部门名称发生了变化,有的联系方式发生了变化,暂且称该表为 t_dept_members, ...

  3. sql跨表查询_跨表更新,看到自己写的SQL像个憨憨

    有点 SQL 基础的朋友肯定听过 「跨表查询」,那啥是跨表更新啊? 背景 项目新导入了一批人员数据,这些人的有的部门名称发生了变化,有的联系方式发生了变化,暂且称该表为 t_dept_members, ...

  4. sql server跨服务器修改数据,SQL Server跨数据库服务器查询和跨表更新的详细操作...

    SQL Server数据库跨数据库服务器查询和跨表更新的相关知识是本文我们主要要介绍的内容,接下来我们就通过一个实例来介绍这一过程.实例是这样的:想实现的功能很简单, 在我的本地一个表用来保存省的信息 ...

  5. mysql用一个表更新另一个表的方法

    Solution 1:  修改1列(navicate可行) update student s, city c set s.city_name = c.name where s.city_code = ...

  6. mysql sql 多表更新语句_MySQL跨表、多表更新SQL语句总结

    Mysql跨表.多表更新SQL语句总结 MySQL可以在一个SQL语句中更新多张表的记录,也可以通过多个表之间的关联关系更新某个表的数据. 假定目前有两张表goods和goods_price表,前者是 ...

  7. Mysql生产环境表更新方案_生产环境中,数据库升级维护的最佳解决方案flyway

    官网:https://flywaydb.org/ 转载:http://casheen.iteye.com/blog/1749916 1.  引言 想到要管理数据库的版本,是在实际产品中遇到问题后想到的 ...

  8. mysql update 多表更新_MySQL UPDATE多表关联更新

    MySQL 可以基于多表查询更新数据.对于多表的 UPDATE 操作需要慎重,建议在更新前,先使用 SELECT 语句查询验证更新的数据与自己期望的是否一致. 下面我们建两张表,一张表为 produc ...

  9. php分享(三十六)mysql中关联表更新

    一:关联不同的表更新 1: 通过where关联更新 update student s, city c set s.province_name = c.province_name, s.city_nam ...

  10. mySQL:两表更新(用一个表更新另一个表)的SQL语句

    用一个表中的字段去更新另外一个表中的字段, MySQL 中有相应的 update 语句来支持,不过这个 update 语法有些特殊.看一个例子就明白了. create table student (s ...

最新文章

  1. 如何对一个软件项目的成本进行评估或估算?
  2. 小米max2 原生 android,小米Max 2用户类原生系统福利:第三方开发者为其适配LineageOS...
  3. html实现3d视觉特效
  4. 虚拟机登服务器,用虚拟机登录云服务器
  5. boost::fusion::result_of::empty用法的测试程序
  6. python中beautifulsoup是什么库_BeautifulSoup库详解(个人整理)
  7. 对症下药教你清除电脑中的木马
  8. docker下创建crontab定时任务失败
  9. java 二分查找_JAVA 实现二分查找算法。我知道你会,但没你想象的那么简单
  10. eclipse 启动服务后,部署的文件一直是旧的文件的原因分析
  11. linux文件乱码crt,Linux中文文件显示乱码或Secure CRT显示乱码解决方案
  12. js脚本实现自由复制百度文库文字
  13. 产品经理应该懂得的一点技术
  14. 1003.Crashing Balloon
  15. 中医哲学基础(精气阴阳五行)
  16. iphone用什么蓝牙耳机好?和iphone适配的蓝牙耳机推荐
  17. windows 进程监控 Procmon.exe
  18. 《DRM 专栏》| 彻底入门 DRM 驱动
  19. thymeleaf数据回显,单选回填,下拉回填,时间框回填
  20. html用标签引入公共页面,html公共部分-header、footer部分引用

热门文章

  1. C# .net中获取台式电脑中串口设备的名称
  2. python源码中的学习笔记_第6章_元组
  3. The freeze_support() line can be omitted
  4. SOTA集结,2020登顶关系抽取的3篇佳作
  5. 【收藏】从A到Z,26个实用Python模块/函数速览
  6. 如何用简单易懂的例子解释隐马尔可夫模型?(进阶篇)
  7. 如何快速水一篇NLP论文?
  8. WannaCry只是个开始?信息时代你急需的安全书单
  9. 测试先知和启发式方法
  10. 两个概念模型及算法之间的关系