当前位置:  数据库>mysql

Mysql跨表更新 多表update sql语句总结

    来源: 互联网  发布时间:2014-10-07

    本文导语:  假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price;另外一张表是ProductPrice表,我们要将ProductPrice表中的价格字段Price更新为Price表中价格字段的80%。 在Mysql中我们有几种手段可以做到这一点,一种是up...

假定我们有两张表,一张表为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两个字段。

    
 
 

您可能感兴趣的文章:

  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • mysql 里面的sql语句的连接字符是什么?急用!
  • Mysql增加主键或者更改表的列为主键的sql语句
  • MYSQL速度慢的问题 记录数据库语句
  • Mysql下在某一列后即表的某一位置添加新列的sql语句
  • 允许远程用户访问mysql服务sql语句
  • mysql update语句的用法详解
  • mysql自定义排序顺序语句
  • mysql查询语句通过limit来限制查询的行数
  • mysql快速添加百万条记录的语句
  • mysql与mssql的md5加密语句
  • mysql通过查看跟踪日志跟踪执行的sql语句
  • mysql 动态执行存储过程语句
  • mysql 前几条记录语句之(limit)
  • MySQL 一次执行多条语句的实现及常见问题
  • MYSQL修改所有表的存储引擎格式语句
  • mysql 获取当天发布的信息的语句
  • mysql中将null值转换为0的语句
  • MySql获取某个字段存在于哪个表的sql语句
  • Mysql 取字段值逗号第一个数据的查询语句
  • MySQL 存储过程中执行动态SQL语句的方法
  • php安装完成后如何添加mysql扩展 iis7站长之家
  • 重装MySQL最后一步失败的完美解决方案(经验总结)
  • 学习mysql之后的一点总结(基础)
  • MySQL触发器学习总结
  • mysql-5.5.28源码安装过程中错误总结
  • 总结MySQL建表、查询优化的一些实用小技巧
  • 修改MYSQL密码的几种常用方法总结
  • 安装resin+mysql+IIS+JDK的总结
  • JSP/JAVABEAN+TOMCAT4.0.5+MYSQL组合建站总结
  • MySQL前缀索引导致的慢查询分析总结
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • mysql 跨表查询、更新、删除示例
  • Mysql两种情况下更新字段中部分数据的方法
  • MySQL 随机查询数据与随机更新数据实现代码
  • MySql中使用INSERT INTO语句更新多条数据的例子
  • Mysql 错误问题汇总(不断更新中)
  • mysql中max_allowed_packet参数的配置方法(避免大数据写入或者更新失败)
  • mysql 一次更新(update)多条记录的思路
  • MySQL 在触发器里中断记录的插入或更新?
  • MySQL UPDATE更新语句精解第1/2页
  • mysql 存在该记录则更新,不存在则插入记录的sql
  • mysql 批量更新与批量更新多条记录的不同值实现方法
  • Mysql 数据库更新错误的解决方法
  • java操作mysql入门代码实例(含插入、更新和查询)
  • MySQL timestamp自动更新时间分享
  • mysql 记录不存在时插入 记录存在则更新的实现方法
  • mysql如果数据不存在,则插入新数据,否则更新的实现方法
  • 利用可更新ResultSet的updateBinaryStream()可以把图片存到mySql数据库,却不能存到Oracle数据库,怎么办?
  • mysql多表join时候update更新数据的方法
  • MySQL数据表字段内容的批量修改、清空、复制等更新命令
  • 与MSSQL对比学习MYSQL的心得(八)--插入 更新 删除
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • Mysql查询错误:ERROR:no query specified原因
  • MySQL 重装MySQL后, mysql服务无法启动
  • php安装完成后如何添加mysql扩展
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • MySQL Workbench的下载安装与使用教程
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3