假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price;另外一张表是ProductPrice表,我们要将ProductPrice表中的价格字段Price更新为Price表中价格字段的80%。
在Mysql中我们有几种手段可以做到这一点,一种是update table1 t1, table2 ts ...的方式:
Sql代码
UPDATE product p, productPrice pp
SET pp.price = pp.price * 0.8
WHERE p.productId = pp.productId
AND p.dateCreated < '2004-01-01'
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然后更新:
Sql代码
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'
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语句:
Sql代码
UPDATE product p
LEFT JOIN productPrice pp
ON p.productId = pp.productId
SET p.deleted = 1
WHERE pp.productId IS null
UPDATE product p
LEFT JOIN productPrice pp
ON p.productId = pp.productId
SET p.deleted = 1
WHERE pp.productId IS null
另外,上面的几个例子都是两张表之间做关联,但是只更新一张表中的记录,其实是可以同时更新两张表的,如下sql:
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'
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数据库基础教程
- Paypal快速支付接口参数设置
- Oracle逗号分隔列转行匹配多条记录
- 澳门太阳集团 为什么要学习云计算?
- 数据库教程:sql 怎样外网连接远程数据库?
- Linux配置源码安装的MySQL同时支持多个字符集
- 北大青鸟数据库技术 1433映像劫持后门提权
- SQL是什么?SQL是什么意思?
- 五步创建成功HTML5离线WEB应用实战
- Mysql数据库备份和还原的常用命令
看过该数据库技术教程的还看过
本文标题:mysql数据库中update sql语句总结,责任编辑:太阳集团娱乐网址,来源:武汉宏鹏,于2012年12月17日10时05分发布于太阳集团娱乐网址。武汉太阳集团娱乐网址专注计算机电脑IT编程培训。学校专注java培训,ui设计培训,web前端培训,python培训,大数据培训等,北大青鸟学校累计为企业培养和输送IT专业人才85万。