假定我们有两张表
一张表为 Product 表存放产品信息产品价格列 Price
一张表是 ProductPrice 表 表存也放产品信息产品价格列 Price
我们要将 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 < '2016-12-22'
另外一种方法是使用inner join然后更新:
复制代码代码如下:
UPDATE product p INNER JOIN productPrice pp ON p.productId = pp.productId SET pp.price = pp.price * 0.8 WHERE p.dateCreated < '2016-12-22'
另外我们也可以使用left join来做多表update,
如果ProductPrice表中没有产品价格记录的话,将Product表的onsale字段置为1
UPDATE product p LEFT JOIN productPrice pp ON p.productId = pp.productId SET p.onsale= 1 WHERE pp.productId IS null
上面的几个例子都是两张表之间做关联,但是只更新其中一张表中的记录,其实是可以同时更新两张表的
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 < '2016-12-22'
两张表做关联,更新了ProductPrice表的price字段和Product表字段的dateUpdate两个字段。
上一篇: PHP时间转换...
下一篇: 阿里云短信接口使用...