mysqlマルチテーブルupdate sql文のまとめ

3596 ワード

mysqlマルチテーブルupdateにはいくつかの異なる書き方があります.
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つのフィールドが更新されます.