假定我们有两张表
一张表为 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
另外一种方法是使用inner join然后更新:
复制代码代码如下:
UPDATE product p
INNER JOIN productPrice pp
ON p.productId = pp.productId
SET pp.price = pp.price * 0.8
WHERE p.dateCreated
另外我们也可以使用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
两张表做关联,更新了ProductPrice表的price字段和Product表字段的dateUpdate两个字段。