假定咱們有兩張表,一張表爲Product表存放產品信息,其中有產品價格列Price;sql
另一張表是ProductPrice表,咱們要將ProductPrice表中的價格字段Price更新爲Price表中價格字段的80%。code
在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而後更新:table
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,date
比方說若是ProductPrice表中沒有產品價格記錄的話,sql語句
將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:tab
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兩個字段。co