`

Mysql跨表更新

 
阅读更多

假定我们有两张表,一张表为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跨表更新 多表update sql语句总结

    Mysql跨表更新一直是大家所关心的话题,本文介绍mysql多表 update在实践中几种不同的写法,需要的朋友可以参考下

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

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

    MySQL跨表查询与跨表更新

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

    mysql 数据表中查找重复记录

    您可能感兴趣的文章:浅谈MySQL临时表与派生表Mysql跨表更新 多表update sql语句总结mysql锁表和解锁语句分享MySQL中基本的多表连接查询教程MySQL表字段设置默认值(图文教程及注意细节)MySQL中使用表别名与字段别名...

    mysql 跨表查询、更新、删除示例

    下面来谈谈跨表插入,更新和删除 首先讨论的是跨表查询: insert into `table_A` select * from... 您可能感兴趣的文章:MySQL数据库同时查询更新同一张表的方法MySQL查询结果复制到新表的方法(更新、插入)MySQL中基本的

    Mysql联表update数据的示例详解

    在MySQL中,可以在 UPDATE语句 中使用JOIN子句执行跨表更新。MySQL UPDATE JOIN的语法如下: UPDATE T1, T2, [INNER JOIN | LEFT JOIN] T1 ON T1.C1 = T2. C1 SET T1.C2 = T2.C2, T2.C3 = expr WHERE condition 更...

    mysql网络数据库指南(中文版) part1

    MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。它具有功能强、使用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问MySQL ...

    苹果CMS程序是一套采用PHP+MYSQL环境下运行的完善而强大的快速建站系统

    更新日志: 2018.09.14.0850 1,修复API接口数据按分类过滤的问题。 2,新增标签comment、gbook自定义pageurl分页参数。 3,新增标签comment、gbook的uid参数,可获取某个用户的数据。 4,新增后台用户管理头像上传...

    c++操作mysql的数据库连接池

    c++操作mysql的数据库连接池,基于std队列实现的,适合于跨平台的操作嵌入式数据库mysql,提供连接池,避免对mysql的cc攻击 更新如下:(找到exeprocedure处代码修改如下) do { mysql_free_result(m_res); ...

    mysql-workbench-community-8.0.36-macos-arm64.dmg

    MySQL Workbench Community 8.0.36 是MySQL官方提供的一款免费、跨平台的数据库设计和管理的图形化工具。它允许用户以直观的方式与MySQL数据库进行交互,提供了从数据库设计、开发到管理的一系列功能。 2. 主要特性...

    mssql跨服务器连接脚本

    mircrosoft sql server跨服务器连接脚本,可进行查询、更新等操作

    MySQL拼接字符串函数GROUP_CONCAT详解

    上一篇文章 跨表更新,看到自己写的SQL像个憨憨写了关于跨表个更新的内容。一年过的很快,文中后来的两位员工 馮大 和 馮二 也要面对无情的 KPI 考核了,他们工作干的很不错,performance 分别是 4 和 5 新需求来了...

    MySQL 开源数据传输中间件 dtle

    爱可生此次开源DTLE,是真诚为社区提供MySQL生态圈里一个可持续发展的工具,并...关于开源 MySQL 数据传输中间件DTLE更多技术细节我们后期会持续输出,版本更新维护及使用问题反馈,欢迎加入DTLE(Q群:852990221)。

    MYSQL网络数据库PDF学习资源

    MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。 它具有功能强、使用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问MySQL ...

    基于Koa2+MySQL博客系统.zip

    MySQL基于关系型数据库模型,数据以表格形式组织,并通过预定义的键(如主键、外键)在表之间建立关联。它完全支持结构化查询语言(SQL),允许用户进行数据查询、插入、更新、删除、创建和管理数据库结构等操作。...

    基于django+mysql的商品推荐系统.zip

    MySQL基于关系型数据库模型,数据以表格形式组织,并通过预定义的键(如主键、外键)在表之间建立关联。它完全支持结构化查询语言(SQL),允许用户进行数据查询、插入、更新、删除、创建和管理数据库结构等操作。...

    基于snort base mysql 的入侵检测系统.zip

    MySQL基于关系型数据库模型,数据以表格形式组织,并通过预定义的键(如主键、外键)在表之间建立关联。它完全支持结构化查询语言(SQL),允许用户进行数据查询、插入、更新、删除、创建和管理数据库结构等操作。...

Global site tag (gtag.js) - Google Analytics