`

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中进行多表更新的不同SQL语句写法,适用于需要根据一张表中的数据来更新另一张表的情况。 首先,我们可以使用传统的`...

    mysql 数据表中查找重复记录

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

    PHP%MySQL跨设备网站开发实例精粹

    《PHP%MySQL跨设备网站开发实例精粹》是由陈惠贞和陈俊荣两位专家编著的一本关于使用PHP和MySQL进行跨设备网站开发的专业书籍。这本书深入浅出地介绍了如何构建适应各种设备的动态网站,包括桌面、手机和平板等。在...

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

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

    Go-mysql-schema-sync是一款使用Go开发跨平台的MySQL表结构自动同步工具

    针对这一需求,Go-mysql-schema-sync应运而生,它是一款由Go语言开发的跨平台MySQL表结构自动同步工具,旨在高效解决多环境下的数据库结构同步问题。 Go-mysql-schema-sync的主要特点和优势: 1. **跨平台性**:...

    省市区数据表mysql

    查询时,可以利用JOIN操作来获取跨表的省市区信息,如`SELECT p.province_name, c.city_name, a.area_name FROM provinces p JOIN cities c ON p.id = c.province_id JOIN areas a ON c.id = a.city_id`,这条查询...

    mysql多表联合查询.pdf

    联合查询可以帮助我们获取跨表的复杂数据信息。 例如: ```sql SELECT c.contact_id, d.droit_id, d.droit FROM contact c INNER JOIN contactdroit cd ON c.contact_id = cd.contact_id INNER JOIN droit d ON cd...

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

    MySQL跨表删除功能是在Mysql 4.0版本后引入的,这允许用户在一个SQL语句中删除多个相关表的数据,极大地提高了数据管理的效率。本文将深入探讨两种主要的跨表删除方式,并提供示例代码,以帮助理解如何安全地进行...

    连接mysql sqlserver的两个数据库

    在IT行业中,数据库管理系统(DBMS)是存储和管理数据的核心工具。MySQL和SQL Server分别是两种广泛应用的关系型...了解这些知识点后,你将能够有效地在MySQL和SQL Server之间建立连接,满足各种跨平台数据处理的需求。

    MSSQL 数据库中创建MySql 跨数据库数据同步

    6. **数据同步**:现在,我们可以在MSSQL中执行查询,更新或插入MySQL数据库中的数据。可以创建触发器、作业或者计划任务来实现定期同步。 需要注意的是,跨数据库同步可能存在性能问题,因为每次操作都需要通过...

    mysql-oracle数据同步

    MySQL也有类似的InnoDB Replication,但跨数据库平台需借助第三方工具。 4. **使用中间件**:例如阿里云DataHub、Debezium等,它们可以捕获MySQL的变更事件,通过消息传递机制推送到Oracle。 描述中提到的"同时...

    全球IP地址分配表_MySQL版

    标题中的“全球IP地址分配表_MySQL版”指的是一个数据表,该表包含了全球范围内的IP地址分配信息,特别地,它是以MySQL数据库格式存储的。MySQL是一种流行的关系型数据库管理系统,用于存储和管理结构化数据,如表格...

    C++Mysql8.0数据库跨平台编程实战.zip

    《C++与MySQL8.0跨平台数据库编程实战》 在现代软件开发中,数据库的使用至关重要,尤其是在大型系统中。本课程聚焦于C++与MySQL8.0的结合,教你如何在不同的操作系统环境下,如Windows和Ubuntu,进行高效、稳定的...

    windows版mysql安装包-mysql5-mysql-5.5.zip

    MySQL 5.5是MySQL的一个重大版本更新,于2010年发布,引入了诸多性能优化和新特性。其中,InnoDB存储引擎得到显著增强,支持更多的并发连接,提高了查询速度,并引入了压缩表功能以节省磁盘空间。 2. **安装步骤**...

    MySQL跨云容灾探索与实践.pdf

    MySQL跨云容灾探索与实践 MySQL跨云容灾的探索与实践是指将 MySQL 数据库部署到多个云平台上,以提高数据库的高可用性和灾难恢复能力。本文将探索 MySQL 跨云容灾的技术架构、关键技术点、挑战和解决方案。 MySQL...

    mysql批量修改表前缀

    此外,如果表前缀更改涉及跨数据库操作,那么SQL语句会有所不同,可能需要使用`USE`语句切换数据库。 总之,批量修改MySQL中的表前缀是一项涉及数据库操作的重要任务,需要谨慎执行,并且确保在执行前有充分的备份...

Global site tag (gtag.js) - Google Analytics