update inner join使用


2枚の表があり、1枚の表はProduct表のために製品情報を保存し、その中に製品価格列Priceがあると仮定します.もう1つのテーブルはProductPriceテーブルです.ProductPriceテーブルの価格フィールドPriceをPriceテーブルの価格フィールドの80%に更新します. 
Mysqlでは、update table 1 t 1、table 2 tsといういくつかの手段があります.方法:
 
   
UPDATE product p, productPrice pp 
SET pp.price = pp.price * 0.8 
WHERE p.productId = pp.productId 
AND p.dateCreated < '2004-01-01' 

もう1つの方法は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 

また、上記のいくつかの例は2つのテーブルの間で関連付けられていますが、1つのテーブルのレコードのみが更新され、実際には2つのテーブルを同時に更新することができます.以下の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' 

2つのテーブルが関連付けられ、ProductPriceテーブルのpriceフィールドとProductテーブルフィールドのdateUpdateの2つのフィールドが更新されます.