国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

Mysql跨表更新 多表update sql語句總結

2024-07-24 13:01:26
字體:
來源:轉載
供稿:網(wǎng)友
假定我們有兩張表,一張表為Product表存放產(chǎn)品信息,其中有產(chǎn)品價格列Price;另外一張表是ProductPrice表,我們要將ProductPrice表中的價格字段Price更新為Price表中價格字段的80%。
在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然后更新:

復制代碼 代碼如下:


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表中沒有產(chǎn)品價格記錄的話,將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


另外,上面的幾個例子都是兩張表之間做關聯(lián),但是只更新一張表中的記錄,其實是可以同時更新兩張表的,如下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'


兩張表做關聯(lián),更新了ProductPrice表的price字段和Product表字段的dateUpdate兩個字段。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 渭源县| 田东县| 靖宇县| 砚山县| 乳山市| 分宜县| 德格县| 文登市| 海南省| 陕西省| 万盛区| 轮台县| 新余市| 乌拉特后旗| 普格县| 庐江县| 阿坝县| 祁门县| 东乡族自治县| 双柏县| 广州市| 句容市| 云和县| 城口县| 新宾| 缙云县| 饶阳县| 衡阳市| 肃北| 安远县| 通化县| 施甸县| 景东| 营山县| 平定县| 会昌县| 邵武市| 扎囊县| 大同市| 徐水县| 勐海县|