假定我们有两张表,一张表为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;
相关推荐
使用SQL脚本将这些数据导入MySQL数据库的过程包括创建表结构、设置字段类型、插入数据等步骤。这可能涉及`CREATE TABLE`、`INSERT INTO`等SQL语句。 6. **数据维护与更新**: 随着行政区划的调整,这些数据需要...
《MySQL必知必会SQL脚本》这个压缩包文件提供了丰富的SQL学习资源,特别是对于那些想要深入了解MySQL数据库管理和数据操作的人来说。SQL(Structured Query Language)是用于管理关系数据库的标准语言,而MySQL则是...
本文实例讲述了MySQL 多表关联一对多查询实现取最新一条数据的方法。分享给大家供大家参考,具体如下: MySQL 多表关联一对多查询取最新的一条数据 ...数据测试初始化SQL脚本 DROP TABLE IF EXIST
描述中提到的“含表结构”意味着这个压缩包不仅包含了SQL脚本,还可能包括了数据库设计的详细信息,如表格的定义、字段名、数据类型等。这对于数据库管理员或开发者来说非常重要,因为他们可以直接根据这些信息创建...
标题中的"机动车车牌归属地mysql脚本数据"意味着这个压缩包内包含了一个SQL脚本,这个脚本可能用于创建一个数据库表,该表存储了各种机动车的车牌号码及其对应的归属地信息。在交通管理和车辆追踪领域,这样的信息...
创建这些表的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脚本文件.rar”指的是一个包含商城数据库结构的SQL脚本集合,这个压缩包是为MySQL数据库设计的。垂直分库是一种数据库优化策略,它将一个大表按照列的关联程度或者业务功能进行拆分,以...
首先,我们看到有三个SQL脚本文件:`common_area.sql`、`common_city.sql`、`common_province.sql`。这些文件通常分别用于创建和填充关于省份(province)、城市(city)和区域(area,可能包括区县)的数据库表。在...
标题中的"MYSQL__省市区SQL"表明这是一组专门用于在MySQL数据库中创建省市区数据表的SQL脚本。这些脚本可以帮助用户在数据库中建立完整的行政区域层次结构,包括省份、城市和区县三级。 描述中提到,这个压缩包包含...
它可以创建、修改或删除数据库对象,如表、索引、视图等,也可以插入、更新和查询数据。编写好的SQL脚本可以一次性执行多条命令,方便数据库的批量维护和数据迁移。 3. **areas.sql、cities.sql、provinces.sql内容...
首先,我们来看`subject.sql`文件,这应该是存储会计科目的SQL脚本。在SQL中,创建表通常使用`CREATE TABLE`语句,其中包括字段名、数据类型、约束条件等。会计科目表可能包含以下字段: 1. `id`:会计科目的唯一...
│ │ 8.2.5 校验表中数据是否有循环编码的通用存储过程.sql │ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例(借鉴方式排序法).sql │ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例.sql ...
总结来说,这个资源提供了一个用于MySQL的SQL脚本,可以创建一个与高德地图区域匹配的、包含GPS经纬度的区域码表。这个表设计有三级联动的功能,便于在GIS应用中进行地理定位和查询操作。为了使用这个脚本,你需要一...
6. **PBDemo_GetDsFromSQL 文件**:这个文件可能是Demo项目或一个包含具体实现的脚本,它演示了如何在PB11.5中从MySQL数据库执行SQL查询并将结果存储到数据存储中。用户可能需要运行或分析此文件以理解整个过程。 ...
首先,我们要理解"jp_lunar_solar.sql"这个SQL脚本文件。它很可能包含创建和填充日历表的SQL语句,可能包括两个主要的表:一个用于公历(阳历),另一个用于农历(阴历)。这两个表可能包含以下字段: 1. **公历表*...
附带的MySQL样例表脚本,可以帮助读者在实际环境中练习SQL语句,这些脚本可能包含创建数据库和表的DDL(Data Definition Language)语句,以及填充数据的DML(Data Manipulation Language)语句。 通过实践这些脚本...
压缩包内的两个文件 "地区_省市区_3级联动-mysql.sql" 和 "地区_省市区_3级联动-sqlserver.sql" 分别针对MySQL和SQL Server提供了相应的SQL脚本。MySQL是一个开源的关系型数据库管理系统,广泛应用于Web应用程序;而...
为了使用这个 SQL 文件,你需要一个数据库管理系统(如 MySQL、PostgreSQL 或 SQLite),导入数据并创建相应的表。然后,你可以编写 SQL 查询来获取和操作这些行政区域数据。例如,查询某个城市的所有区县,或者找出...
首先,`IP.sql`文件通常包含一系列SQL语句,这些语句用于在数据库中创建所需的表结构以及插入IP地域数据。打开这个文件,你可以看到创建表的`CREATE TABLE`语句,定义了表的字段,如`ip_from`(起始IP)、`ip_to`...