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