MySQL 常用的UPDATE操作_MySQL
概述
测试环境:mysql 5.6.21
步骤
创建测试表
CREATE TABLE `product` (
`proID` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品表主键',
`price` decimal(10,2) NOT NULL COMMENT '商品价格',
`type` int(11) NOT NULL COMMENT '商品类别(0生鲜,1食品,2生活)',
`dtime` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`proID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='商品表';
CREATE TABLE `producttype` (
`ID` int(11) NOT NULL COMMENT '商品类别(0生鲜,1食品,2生活)',
`amount` int(11) COMMENT '每种类别商品总金额',
UNIQUE KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品类别资金汇总表'
插入测试数据
INSERT INTO product(price,type,dtime) VALUES(10.00,0,now()),(10.00,1,now()),(10.00,1,now()),(20.00,2,now()),(30.00,3,now());
INSERT INTO producttype(ID) VALUES(1),(2),(3);
SELECT * FROM product;
SELECT * FROM producttype;
单表更新操作
UPDATE product
SET price='20.00',type=0
WHERE proID=2;
关联更新操作
UPDATE producttype,product
SET producttype.amount=product.price
where product.TYPE = producttype.ID AND product.TYPE=1;
1.查询所有字段
INSERT INTO producttype(ID) VALUES(4);
UPDATE producttype
SET producttype.amount= (SELECT ifnull(SUM(product.price),0.00) FROM product WHERE product.TYPE = producttype.ID GROUP BY product.TYPE);
注意:大家注意看到rows matched:4,表示符合条件的记录是4条,实际更新了三条,关联语句默认不去判断里面的关联的实际行。
2.只查询需要更新的字段
UPDATE producttype
SET amount=null;
UPDATE producttype,product
SET producttype.amount=
(SELECT ifnull(SUM(product.price),0.00)
FROM product
WHERE product.TYPE = producttype.ID
GROUP BY product.TYPE)
where product.TYPE = producttype.ID;
改用下面这种方法:Rows matched:3,查询到了符合条件的行是3行,没有查询无关联的行。
总结
mysql的update的关联操作在5.6中后面不能直接接FROM语句,只能UPDATE 所有的连接表然后WHERE,如果之前有事情其它数据库产品的习惯在这里要注意了。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

探索Canvas框架:了解常用的Canvas框架有哪些,需要具體程式碼範例引言:Canvas是HTML5中提供的一個繪圖API,透過它我們可以實現豐富的圖形和動畫效果。為了提高繪圖的效率和便利性,許多開發者開發了不同的Canvas框架。本文將介紹一些常用的Canvas框架,並提供具體程式碼範例,以幫助讀者更深入地了解這些框架的使用方法。一、EaselJS框架Ea

Spring是一個開源框架,提供了許多註解來簡化和增強Java開發。本文將詳細解釋常用的Spring註解,並提供具體的程式碼範例。 @Autowired:自動組裝@Autowired註解可以用於自動組裝Spring容器中的Bean。當我們在需要依賴的地方使用@Autowired註解時,Spring將會在容器中尋找匹配的Bean並自動注入。範例程式碼如下:@Auto

十五大比特幣逃頂指標深度解析:2025年市場展望本文深入分析了十五個常用的比特幣逃頂指標,其中比特幣Rhodl比率、USDT活期理財和山寨幣季節指數已於2024年觸及逃頂區間,引發市場關注。面對潛在風險,投資者該如何應對?讓我們逐一解讀這些指標,並探討合理的應對策略。一、關鍵指標詳解AHR999囤幣指標:由ahr999創建,輔助比特幣定投策略。當前值為1.21,處於觀望區間,建議謹慎。鏈接AHR999逃頂指標:AHR999囤幣指標的補充,用於識別市場頂部。當前值為2.48,本週

隨著網路的發展,資料安全已成為我們日常工作中必須關注的嚴肅議題。針對敏感的個人資訊或商業數據,加密變得特別重要。在PHP開發中,有些加密演算法被廣泛應用,下面我們就來了解PHP常用的加密演算法。一、Base64編碼Base64編碼常用於在網頁傳輸或郵件中傳輸二進位數據,因為網頁或郵件只能傳送發送字串類型數據,不能直接傳輸二進位數據。 Base64就是一種解

Oracle資料庫是一種常用的關聯式資料庫管理系統,它支援多種資料類型以滿足不同的需求。在使用Oracle資料庫時,了解資料庫的資料類型是非常重要的。本文將介紹Oracle資料庫中常用的資料類型,並附帶具體的程式碼範例。一、數值型資料型別NUMBERNUMBER是Oracle資料庫中最常用的數值型資料型別,用於儲存整數或浮點數。 NUMBER資料型別可以指定精度

Go語言中常用的函數有哪些? ————探究Go語言中常用的函數及其用法作為一門流行的靜態型別程式語言,Go語言廣泛應用於各種領域,如伺服器端開發、網路程式設計、雲端運算等。在Go語言中,函數作為基本的程式碼組織單元,是程式運作的重要組成部分。本文將探討Go語言中常用的函數及其用法,幫助讀者更掌握這門語言的核心特性。一、函數宣告與呼叫函數在Go語言中以關鍵字"fun

軟體開發領域在很長一段時間內發生了巨大變化,DevOps已成為現代電腦程式交付過程中的基本組成部分。為了簡化電腦程式開發和營運的過程,DevOps培養了一種合作、持續整合和不間斷交付的文化。程式語言的選擇在DevOps的高效利用中起著重要作用,而在這個領域中兩個知名的競爭者是Ruby和Python。在這裡,我們將研究Ruby和Python在DevOps環境中的選擇、流行度和使用案例。我們將調查它們獨特的特點、優點和缺點,以幫助您決定哪種語言最適合您的DevOps需求。第一節:Ruby和Pytho

Java是一種廣泛使用的程式語言,在開發過程中,資料結構是不可或缺的一部分。數據結構有助於組織和管理數據,提高程序的執行效率。在Java中,常用的資料結構包括陣列、鍊錶、堆疊、佇列、樹、圖等。本文將深入解析這些常用的Java資料結構,並提供具體的程式碼範例。一、數組(Array)數組是一種線性資料結構,它可以儲存相同類型的元素。在Java中,可以使用以下方式聲明
