`

Mysql跨表更新 多表update sql语句总结

 
阅读更多

转自 http://www.jb51.net/article/32648.htm

Mysql跨表更新一直是大家所关心的话题,本文介绍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两个字段。

分享到:
评论

相关推荐

    mysql 数据表中查找重复记录

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

    Mysql Update批量更新的几种方式

    通常情况下,我们会使用以下SQL语句来更新字段值: UPDATE mytable SET myfield='value' WHERE other_field='other_value'; 但是,如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?刚...

    mysql update正则替换sql语句

    主要介绍了mysql update正则替换sql语句的相关资料,需要的朋友可以参考下

    mysql创建表的sql语句详细总结

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

    mysql修改语句-mysql

    在 MySQL中,可以使用 UPDATE 语句来修改、更新一个或多个表的数据。 基础语法 UPDATE 语句的基本语法 使用 UPDATE 语句修改单个表,语法格式为: UPDATE &lt;表名&gt; SET 字段 1=值 1 [,字段 2=值 2… ] [WHERE 子句...

    java定时执行sql语句

    通过配置数据库连接信息和要执行的sql语句,可实现定时执行多个sql语句。 所要执行的语句只能是写死的,可支持sqlserver mysql oracle。 配置说明: config/sys.properties 中指定数据库类型及连接信息,执行间隔...

    根据表名及字段,自动生成insert,update,select语句

    首先在数据库中创建存储过程和方法,然后调用创建好的存储过程,生成带有与表名及字段相关的insert,update,delete语句,变量与表字段名相同,例如: "insert into temp (col1,col2,col3) values ('"+col1+"','"+col2...

    SQL语句详解 MySQL update的正确用法

    单表的MySQL UPDATE语句:  UPDATE [LOW_PRIORITY] [IGNORE] tbl_name  SET col_name1=expr1 [, col_name2=expr2 ...]  [WHERE where_definition]  [ORDER BY ...]  [LIMIT row_count]  多表的UPDATE语句...

    SQL语句生成及分析器

    该工具的主要特色: 1、支持几乎所有类型的数据库, ...6、支持将SQL查询语句,替换为插入(Insert into)和更新(Update)语句 7、附属工具内嵌入Delphi IDE(支持Delphi 5和Delphi 6) 8、文件拖放(SQL和TXT文件)

    MySQL跨表查询与跨表更新

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

    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 数据库中使用 C 执行 SQL语句

    用详尽的 MySQL C 接口介绍了如何在 MySQL 数据库中执行 SQL 语句。讨论返回数据的语句,例如 INSERT 以及不返回数据的语句,例如 UPDATE 和 DELETE。然后,将编写从数据库检索数据的简单程序。

    MySQL常用基本SQL语句小结

    SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK

    asp使用SQL语句的UpDate命令修改数据库表中的一个记录[收集].pdf

    asp使用SQL语句的UpDate命令修改数据库表中的一个记录[收集].pdf

    insert/update同时执行(mysql,oracle,sqlserver)

    判断是否存在,存在就update,不存在insert,不是用存储过程解决的。

    MySQL prepare语句的SQL语法

    MySQL prepare语法: PREPARE statement_name FROM preparable_SQL_statement; /*定义*/ EXECUTE statement_name [USING @var_name [, @var_name] …]; /*执行预处理语句*/ {DEALLOCATE | DROP} PREPARE statement_...

    SQL语句(自我总结).docx

    SQL语句的基本语句总结: DDL操作数据库:数据定义语言,操作数据库和表示,关键字:create、drop、alter等;DDL操作表 ;DML操作记录:数据操作语言,对数据进行增删改,关键字:insert, delete, update等;DQL:数据...

    MYSQL常用命令大全

    12:更新表中数据 mysql&gt;update MYTABLE set sex="f" where name='hyq'; 以下是无意中在网络看到的使用MySql的管理心得, 摘自:http://www1.xjtusky.com/article/htmldata/2004_12/3/57/article_1060_1.html 在...

Global site tag (gtag.js) - Google Analytics