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两个字段。

linux update语句,MySQL 多表 update sql语句总结相关推荐

  1. mysql创建用户表的sql语句,mysql创建表的sql语句

    mysql 动态sql语句,如何用一款小工具大大加速MySQL SQL语句优化(附源,mysql分页查询sql语句,mysql创建表的sql语句 mysql建表语句_计算机软件及应用_IT/计算机_专 ...

  2. mysql基本表管理sql语句

    管理表记录 insert into 表名 values(字段值列表) 增 select 字段名 -字段N from 表名: 查 select 字段名.. 字段N from表名 where 条件 upd ...

  3. mysql查询主键sql语句_MySQL数据库-表操作-SQL语句(一)

    1. 数据库操作与存储引擎 1.1   数据库和数据库对象 数据库对象:存储,管理和使用数据的不同结构形式,如:表.视图.存储过程.函数.触发器.事件等. 数据库:存储数据库对象的容器. 数据库分两种 ...

  4. mysql修改表结构sql语句

    修改表结构sql语句 虽然说图形界面可以方便修改,但是要从开发环境中同步到生产环境上就得用到sql语句,同步表结构一个个去点显然不合理 #修改表名 alter table old_name renam ...

  5. mysql切换用户sql语句,MySQL用户管理及SQL语句详解

    [(none)]>select user,host frommysql.user; #查询用户和主机+---------------+-----------+ | user | host | + ...

  6. mysql多表查询sql语句怎么写_MySQL基本SQL语句之单表查询、多表查询和子查询

    一.简单查询: 基本语法: SELECT * FROM tb_name;查询全部 SELECT field1,field2 FROM tb_name; 投影 SELECT [DISTINCT] * F ...

  7. MySQL查看表结构SQL语句

    mysql查看表结构命令,如下: desc 表名; show columns from 表名; describe 表名; show create table 表名; use information_s ...

  8. mysql建表用的什么语句_mysql建表常用sql语句个人经验分享

    连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样) 断开:exit (回车) 创建授权:grant select on 数据库.* to 用户名@ ...

  9. mysql连表的sql语句_sql语句之连表操作

    内连接 select * from employee inner join department on employee.dep_id = department.id 左连接 在内连接的基础上保留左表 ...

最新文章

  1. python——闭包
  2. 基于Huffman算法和LZ77算法的文件压缩的改进方向
  3. 《Go语言圣经》学习笔记 第四章 复合数据类型
  4. 深度linux内核升级,深度操作系统 2020.11.11 更新发布:内核升级
  5. 初秋 · 外婆家的茶山 · 快乐的味道 2012年9月
  6. OpenStack Orchestration service (编排服务Heat)
  7. python模拟浏览器访问百度_selenium与python自动化测试模拟登录百度
  8. 蓝屏代码查询及代码分析
  9. 数据库课程设计银行管理系统(SQL Server)
  10. js 实现单击、双击事件
  11. matlab norm函数使用_「matlabnorm」matlab中norm函数的用法 - 金橙教程网
  12. jdom生成与解析xml详解
  13. c语言26字母排序,C语言,26个字母的冒泡排序
  14. csp-j/s组第一轮测试140题版本模拟试题及解析
  15. linux qdel强制删除任务,SGE:qsub/qstat/qdel/qhost 任务投递和监控
  16. [刷题]剑指offer C++语言刷题-多解法尝试
  17. 陈潭:大数据战略实施的实践逻辑与行动框架
  18. http劫持软件、怎么应对这样的 HTTP 劫持
  19. 埃斯顿机器人 王杰高_泰州市教育局 教育动态 南京埃斯顿集团王杰高博士一行来南理工泰州科技学院开展合作交流...
  20. 半导体器件物理【5】固体量子 —— 能带与k空间

热门文章

  1. Java常见的几种内存溢出及解决方法
  2. 创建Console应用程序,粘贴一下代码,创建E://MyWebServerRoot//目录,作为虚拟目录,亲自测试通过,
  3. NGUI EventDelagate事件委托
  4. Tiny框架2.0版火热推出
  5. [CareerCup] 1.1 Unique Characters of a String 字符串中不同的字符
  6. Mongodb 安装和启动
  7. ASP.NET实现二维码(QRCode)的创建和读取
  8. bootstrap 中这段代码 使bundles 失败
  9. nib和xib的区别
  10. Exchange2003-2010迁移系列之二,迁移前的准备工作(上)