MySQL實(shí)現(xiàn)數(shù)據(jù)更新的示例詳解
一般在更新時(shí)會(huì)遇到以下場(chǎng)景:
1.所有字段全部更新;
2.根據(jù)條件更新字段中的某部分內(nèi)容;
3.根據(jù)不同的條件更新不同的值
以下是幾種場(chǎng)景中常用的update方法。
一、方法分類(lèi)
二、具體用法
(1)根據(jù)條件更新值
根據(jù)指定條件更新(多列)(全部更新)
把表中 [符合條件的行的] 列名1字段中的值全部修改為值1 [,列名2字段中的值修改為值2]。
update 表名 set 列名1 = 值1 [,列名2=值2] [where 條件];
替換指定值(多列)(部分更新)
把表中 [符合條件的行的] 列名1字段中的查找內(nèi)容全部修改為替換內(nèi)容 [,列名2字段中的查找內(nèi)容全部修改為替換內(nèi)容]。
update 表名 set 列名1 = replace(列名1, '查找內(nèi)容', '替換內(nèi)容') [,列名2 = replace(列名2, '查找內(nèi)容', '替換內(nèi)容')] [where 條件];
(2)按照不同條件(批量)更新不同值
使用 if
把表中 [符合條件的行的] 列名1字段中符合條件1的內(nèi)容修改為值1,否則修改為值2 [,列名2字段中符合條件2的內(nèi)容修改為值3,否則修改為值4]。
update table set 列名1 = if(條件1,值1,值2), 列名2 = if(條件2,值3,值4) [where 條件];
使用 case when
把表中 [符合條件的行的] 列名1字段中符合條件1的內(nèi)容修改為值1 [,符合條件2的修改為值2,...] [,列名2字段中符合條件21的內(nèi)容修改為值21,符合條件22的修改為值22,...] 。
update table set 列名1 = case when 條件1 then 值1 when 條件2 then 值2 when 條件3 then 值3 ... end, 列名2 = case when 條件21 then 值21 when 條件22 then 值22 when 條件23 then 值23 ... end [where 條件];
三、實(shí)例
students 表 (id表示主鍵,name是姓名,score是平均成績(jī))
id | name | score |
---|---|---|
1 | 李明 | 99 |
2 | 張三 | 74 |
3 | 孫華 | 59 |
(1)根據(jù)條件更新值
把 students 表中 name 為張三的 score 字段的值全部修改為100。
#使用where update students set score = 100 where name = '張三';
id | name | score |
---|---|---|
1 | 李明 | 99 |
2 | 張三 | 100 |
3 | 孫華 | 59 |
把 students 表中 id 大于等于2的所有行中 score 中59的部分全部修改為0,name 中三的部分全部修改為四。
#使用replace update students set score = replace(score,59,0), name = replace(name,'三','四') where id >= 2;
注意:張三替換之后是張四,并不是只有字段等于三時(shí)才能替換。
id | name | score |
---|---|---|
1 | 李明 | 99 |
2 | 張四 | 74 |
3 | 孫華 | 0 |
(2)按照不同條件更新不同值
請(qǐng)把students表中score小于60的score字段全部改為0,否則改為100,name字段中的名字改為不及格,否則改為及格。
#批量更新多值 + if update students set score = if(score < 60,0,100), name = if(score < 60,'不及格','及格');
id | name | score |
---|---|---|
1 | 及格 | 100 |
2 | 及格 | 100 |
3 | 不及格 | 0 |
注意:更新的值要滿足建表時(shí)的字段類(lèi)型。比如score是int類(lèi)型就不能更新為char類(lèi)型。
請(qǐng)把students表中score小于60的score字段全部改為0,name字段中的名字改為不及格;score大于等于90的score字段全部改為2,name字段中的名字改為優(yōu)秀;score大于等于60小于90的score字段全部改為1,name字段中的名字改為良好。
#批量更新多值 + case when update students set name = case when score < 60 then '不及格' when score >= 90 then '優(yōu)秀' else '良好' end, score = case when score < 60 then 0 when score >= 90 then 2 else 1 end;
注意:更新的時(shí)候是按照代碼語(yǔ)句的先后順序更新的??梢試L試先更新score后更新name,結(jié)果是不一樣的。
id | name | score |
---|---|---|
1 | 優(yōu)秀 | 2 |
2 | 良好 | 1 |
3 | 不及格 | 0 |
到此這篇關(guān)于MySQL實(shí)現(xiàn)數(shù)據(jù)更新的示例詳解的文章就介紹到這了,更多相關(guān)MySQL數(shù)據(jù)更新內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL Packet for query is too large 問(wèn)題及解決方法
這篇文章主要介紹了MySQL Packet for query is too large 問(wèn)題及解決方法,需要的朋友可以參考下2018-05-05Table ‘xxx’ is marked as crashed and should be repaired 錯(cuò)誤解決
這些東西都是從其他地方找來(lái)的一些解決MYSQL數(shù)據(jù)庫(kù)這個(gè)錯(cuò)誤的方法,并不一定適用于神跡數(shù)據(jù)庫(kù),僅僅供參考一下,具體的解決方法還是需要摸索。2009-04-04關(guān)于MySQL8.x group_by報(bào)錯(cuò)的4種解決方案
這篇文章主要介紹了關(guān)于MySQL8.x group_by報(bào)錯(cuò)的4種解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06如何修改Mysql中g(shù)roup_concat的長(zhǎng)度限制
在mysql中,有個(gè)函數(shù)叫“group_concat”,平常使用可能發(fā)現(xiàn)不了問(wèn)題,在處理大數(shù)據(jù)的時(shí)候,會(huì)發(fā)現(xiàn)內(nèi)容被截取了。怎么解決這一問(wèn)題呢,下面腳本之家小編給大家?guī)?lái)了Mysql中g(shù)roup_concat的長(zhǎng)度限制問(wèn)題,感興趣的朋友一起看看吧2018-08-08MySQL出現(xiàn)錯(cuò)誤代碼:1055的三種解決方案(推薦!)
當(dāng)我們?cè)诓樵儠r(shí)使用group by語(yǔ)句,出現(xiàn)錯(cuò)誤代碼:1055;執(zhí)行發(fā)生錯(cuò)誤語(yǔ)句,本文給大家介紹了MySQL出現(xiàn)錯(cuò)誤代碼:1055的三種解決方案,文中有詳細(xì)的代碼示例和圖文供大家參考,需要的朋友可以參考下2024-05-05MySQL過(guò)濾重復(fù)數(shù)據(jù)的兩種方法示例
數(shù)據(jù)庫(kù)生成環(huán)境中經(jīng)常會(huì)遇到表中有重復(fù)的數(shù)據(jù),或者進(jìn)行關(guān)聯(lián)過(guò)程中產(chǎn)生重復(fù)數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MySQL過(guò)濾重復(fù)數(shù)據(jù)的兩種方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04mysql 大表批量刪除大量數(shù)據(jù)的實(shí)現(xiàn)方法
這篇文章主要介紹了mysql 大表批量刪除大量數(shù)據(jù)的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02數(shù)據(jù)庫(kù)連接池以及sequelize實(shí)現(xiàn)增刪改查等操作指南
Sequelize的連接需要傳入?yún)?shù),并且可以配置開(kāi)啟線程池、讀寫(xiě)分庫(kù)等操作,下面這篇文章主要給大家介紹了關(guān)于數(shù)據(jù)庫(kù)連接池以及sequelize實(shí)現(xiàn)增刪改查等操作的相關(guān)資料,需要的朋友可以參考下2022-08-08史上最簡(jiǎn)單的MySQL數(shù)據(jù)備份與還原教程(下)(三十七)
這篇文章主要為大家詳細(xì)介紹了史上最簡(jiǎn)單的MySQL數(shù)據(jù)備份與還原教程下篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10