`
gaozzsoft
  • 浏览: 424672 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

MySQL关联表更新数据SQL脚本

 
阅读更多

 

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

 

UPDATE product p, productPrice pp 

SET pp.price = p.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两个字段。

 

 

update table_1 set score = score + 5 where uid in (select uid from table_2 where sid = 10);

其实update也可以用到left join、inner join来进行关联,可能执行效率更高,把上面的sql替换成join的方式如下:

update table_1 t1 inner join table_2 t2 on t1.uid = t2.uid set score = score + 5 where t2.sid = 10;

 

 

mysql关联多表进行update更新操作

 代码如下复制代码

UPDATE Track

INNER JOIN MV

ON Track.trkid=MV.mvid

SET Track.is_show=MV.is_show

WHERE trkid<6

 

等同于

 

UPDATE Track,MV

SET Track.is_show=MV.is_show

WHERE Track.trkid=MV.mvid and trkid<6

 

 

update student s, city c

   set s.city_name = c.name

 where s.city_code = c.code;

也可以试下面的相关子查询:

 

update student s set city_name = (select name from city where code = s.city_code);

 

============================================================

e.g.

 

update t_xd_after_loan_core a, t_xd_loan_extend e 

set a.bid_limit = e.bid_limit,a.bid_borrow_period_unit=e.bid_borrow_period_unit 

where a.bid =e.bid and a.create_date < '2017-06-22 22:00:00' and a.play_money_type in (1,3,10); 

 

update t_xd_after_loan_core a 

set a.bid_limit=1,a.bid_borrow_period_unit=2 

where a.create_date < '2017-06-22 22:00:00' and a.play_money_type in (5,6) and a.refund_way=5; 

 

update t_xd_after_loan_core a, t_xd_loan_extend e 

set a.bid_limit = e.bid_limit,a.bid_borrow_period_unit=e.bid_borrow_period_unit 

where a.bid =e.bid and a.create_date < '2017-06-22 22:00:00' and a.play_money_type in (5,6) and a.refund_way=4; 

 

分享到:
评论

相关推荐

    mysql 全国省市区3级数据 和 4级数据 (sql脚本).rar

    使用SQL脚本将这些数据导入MySQL数据库的过程包括创建表结构、设置字段类型、插入数据等步骤。这可能涉及`CREATE TABLE`、`INSERT INTO`等SQL语句。 6. **数据维护与更新**: 随着行政区划的调整,这些数据需要...

    MySQL必知必会SQL脚本.zip

    《MySQL必知必会SQL脚本》这个压缩包文件提供了丰富的SQL学习资源,特别是对于那些想要深入了解MySQL数据库管理和数据操作的人来说。SQL(Structured Query Language)是用于管理关系数据库的标准语言,而MySQL则是...

    MySQL 多表关联一对多查询实现取最新一条数据的方法示例

    本文实例讲述了MySQL 多表关联一对多查询实现取最新一条数据的方法。分享给大家供大家参考,具体如下: MySQL 多表关联一对多查询取最新的一条数据 ...数据测试初始化SQL脚本 DROP TABLE IF EXIST

    省市区乡镇村五级数据区域编码数据库sql脚本(含表结构)

    描述中提到的“含表结构”意味着这个压缩包不仅包含了SQL脚本,还可能包括了数据库设计的详细信息,如表格的定义、字段名、数据类型等。这对于数据库管理员或开发者来说非常重要,因为他们可以直接根据这些信息创建...

    2024年全国省市区县街道SQL数据脚本

    2024年全国省市区县街道SQL数据脚本

    机动车车牌归属地mysql脚本数据

    标题中的"机动车车牌归属地mysql脚本数据"意味着这个压缩包内包含了一个SQL脚本,这个脚本可能用于创建一个数据库表,该表存储了各种机动车的车牌号码及其对应的归属地信息。在交通管理和车辆追踪领域,这样的信息...

    全国省市区数据sql (mysql)三级联动

    创建这些表的SQL脚本可能如下: ```sql CREATE TABLE `province` ( `id` INT PRIMARY KEY, `name` VARCHAR(50) NOT NULL ); CREATE TABLE `city` ( `id` INT PRIMARY KEY, `name` VARCHAR(50) NOT NULL, `...

    省市区县基础数据(sql脚本格式)

    在这个场景中,SQL脚本包含了创建表格、插入数据以及可能的数据更新操作,用于在用户的数据库环境中重现省市区县的层级结构。 资源中的三张数据表很可能分别对应“省份”、“城市”和“区县”这三个层次。每张表...

    商城数据库SQL脚本文件.rar

    【标题】:“商城数据库SQL脚本文件.rar”指的是一个包含商城数据库结构的SQL脚本集合,这个压缩包是为MySQL数据库设计的。垂直分库是一种数据库优化策略,它将一个大表按照列的关联程度或者业务功能进行拆分,以...

    全国行政区域省市区代码 MySQL多表设计+数据

    首先,我们看到有三个SQL脚本文件:`common_area.sql`、`common_city.sql`、`common_province.sql`。这些文件通常分别用于创建和填充关于省份(province)、城市(city)和区域(area,可能包括区县)的数据库表。在...

    MYSQL__省市区SQL.

    标题中的"MYSQL__省市区SQL"表明这是一组专门用于在MySQL数据库中创建省市区数据表的SQL脚本。这些脚本可以帮助用户在数据库中建立完整的行政区域层次结构,包括省份、城市和区县三级。 描述中提到,这个压缩包包含...

    会计科目和会计科目分类的两张mysql表,sql语句文件

    首先,我们来看`subject.sql`文件,这应该是存储会计科目的SQL脚本。在SQL中,创建表通常使用`CREATE TABLE`语句,其中包括字段名、数据类型、约束条件等。会计科目表可能包含以下字段: 1. `id`:会计科目的唯一...

    全国省市区编号MySql脚本

    它可以创建、修改或删除数据库对象,如表、索引、视图等,也可以插入、更新和查询数据。编写好的SQL脚本可以一次性执行多条命令,方便数据库的批量维护和数据迁移。 3. **areas.sql、cities.sql、provinces.sql内容...

    经典SQL脚本大全

    │ │ 8.2.5 校验表中数据是否有循环编码的通用存储过程.sql │ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例(借鉴方式排序法).sql │ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例.sql ...

    areaCode_sql区域码表脚本

    总结来说,这个资源提供了一个用于MySQL的SQL脚本,可以创建一个与高德地图区域匹配的、包含GPS经纬度的区域码表。这个表设计有三级联动的功能,便于在GIS应用中进行地理定位和查询操作。为了使用这个脚本,你需要一...

    PB 从SQL语句获取数据存储(MySQL)

    6. **PBDemo_GetDsFromSQL 文件**:这个文件可能是Demo项目或一个包含具体实现的脚本,它演示了如何在PB11.5中从MySQL数据库执行SQL查询并将结果存储到数据存储中。用户可能需要运行或分析此文件以理解整个过程。 ...

    mysql日历数据表1900-2100(公历表和农历表).rar

    首先,我们要理解"jp_lunar_solar.sql"这个SQL脚本文件。它很可能包含创建和填充日历表的SQL语句,可能包括两个主要的表:一个用于公历(阳历),另一个用于农历(阴历)。这两个表可能包含以下字段: 1. **公历表*...

    SQL必知必会第4版PDF(附MySQL样例表脚本)

    附带的MySQL样例表脚本,可以帮助读者在实际环境中练习SQL语句,这些脚本可能包含创建数据库和表的DDL(Data Definition Language)语句,以及填充数据的DML(Data Manipulation Language)语句。 通过实践这些脚本...

    省市区字典sql-mysql-sqlserver.zip

    压缩包内的两个文件 "地区_省市区_3级联动-mysql.sql" 和 "地区_省市区_3级联动-sqlserver.sql" 分别针对MySQL和SQL Server提供了相应的SQL脚本。MySQL是一个开源的关系型数据库管理系统,广泛应用于Web应用程序;而...

    全球行政区 省市区 数据 sql

    为了使用这个 SQL 文件,你需要一个数据库管理系统(如 MySQL、PostgreSQL 或 SQLite),导入数据并创建相应的表。然后,你可以编写 SQL 查询来获取和操作这些行政区域数据。例如,查询某个城市的所有区县,或者找出...

Global site tag (gtag.js) - Google Analytics