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

首頁 > 數據庫 > MySQL > 正文

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

2020-01-18 23:53:11
字體:
來源:轉載
供稿:網友
假定我們有兩張表,一張表為Product表存放產品信息,其中有產品價格列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表中沒有產品價格記錄的話,將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

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

兩張表做關聯,更新了ProductPrice表的price字段和Product表字段的dateUpdate兩個字段。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 霍山县| 嫩江县| 大埔区| 沾益县| 平定县| 孟津县| 崇义县| 合山市| 连州市| 山阴县| 廉江市| 昌宁县| 太白县| 武鸣县| 图木舒克市| 永丰县| 漳浦县| 民权县| 海安县| 鄂托克前旗| 高淳县| 布尔津县| 长顺县| 安图县| 高安市| 巴南区| 辛集市| 进贤县| 安仁县| 平南县| 桐柏县| 乐清市| 彰化县| 固阳县| 宽城| 灵山县| 长沙县| 井研县| 托克逊县| 西平县| 南平市|