update inner join使用
2枚の表があり、1枚の表はProduct表のために製品情報を保存し、その中に製品価格列Priceがあると仮定します.もう1つのテーブルはProductPriceテーブルです.ProductPriceテーブルの価格フィールドPriceをPriceテーブルの価格フィールドの80%に更新します.
Mysqlでは、update table 1 t 1、table 2 tsといういくつかの手段があります.方法:
もう1つの方法はinner joinを使用して更新することです.
また、left outer joinを使用してマルチテーブルupdateを作成することもできます.たとえば、ProductPriceテーブルに製品価格記録がない場合は、ProductテーブルのisDeletedフィールドを1に設定します.次のsql文です.
また、上記のいくつかの例は2つのテーブルの間で関連付けられていますが、1つのテーブルのレコードのみが更新され、実際には2つのテーブルを同時に更新することができます.以下のsqlです.
2つのテーブルが関連付けられ、ProductPriceテーブルのpriceフィールドとProductテーブルフィールドのdateUpdateの2つのフィールドが更新されます.
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つのフィールドが更新されます.