注:文章參考:
MySQL 更新數(shù)據(jù) 不同條件(批量)更新不同值_update批量更新同一列不同值-CSDN博客文章瀏覽閱讀2w次,點(diǎn)贊20次,收藏70次。一般在更新時(shí)會(huì)遇到以下場(chǎng)景:1.全部更新;2.根據(jù)條件更新字段中的某部分內(nèi)容;3.根據(jù)不同的條件更新不同的值,以下是幾種場(chǎng)景中常用的update方法。_update批量更新同一列不同值https://blog.csdn.net/chengyj0505/article/details/128357191? ? 本篇主要介紹mysql數(shù)據(jù)庫(kù)中的不同條件批量更新不同的值。更新時(shí)會(huì)遇到以下場(chǎng)景:
1.全部更新;
2.根據(jù)條件更新字段中的某部分內(nèi)容;
3.根據(jù)不同的條件更新不同的值
以下是幾種場(chǎng)景中常用的update方法。
一、場(chǎng)景分類
二、具體用法
2.1 根據(jù)條件更新值
-
根據(jù)指定條件更新(多列)(全部更新)
? ? ? 把表中 [符合條件的行的] 列名1字段中的值全部修改為值1? [,列名2字段中的值修改為值2]。
語(yǔ)法:
update 表名
?set? 列名1 =值1 [,列名2 = 值2]
?[where 條件];
- 替換指定值(多列)(部分更新)
? ? ? ?把表中 [符合條件的行的] 列名1字段中的查找內(nèi)容全部修改為替換內(nèi)容 [,列名2字段中的查找內(nèi)容全部修改為替換內(nèi)容]。
語(yǔ)法:
update 表名?
set 列名1? =? replace(列名1, '查找內(nèi)容', '替換內(nèi)容')? [, 列名2 = replace(列名2, '查找內(nèi)容', '替換的內(nèi)容')]?
[where 條件];
2.2 按照不同條件(批量)更新不同值
- 使用if
update? 表名
set?
? ? ?列名1 = if (條件1,值1,值2),
? ? ?列名2 = if (條件2,值3,值4)
[where 條件];
- 使用case when
update? 表名
set?
? ? ?列名1 =
? ? ?case?
? ? ? ? ? ? when 條件1 then 值1
? ? ? ? ? ? when 條件2 then 值2
? ? ? ? ? ? when 條件3 then 值3
? ? ? ? ? ? ...
? ? ?end,
? ? ?列名2 =
? ? ?case?
? ? ? ? ? ? when 條件12 then 值12
? ? ? ? ? ? when 條件22 then 值22
? ? ? ? ? ? when 條件32 then 值32
? ? ? ? ? ? ......
? ? ? ?end
[where 條件];
ps:注意更新的值要滿足建表時(shí)的字段類型,例如字段A建表時(shí)是int類型,update更新的時(shí)候,不能更新為varchar類型等
三、實(shí)例
students 表?(id表示主鍵,name是姓名,score是平均成績(jī))
CREATE TABLE IF NOT EXISTS students (
id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
name varchar(8) NOT NULL COMMENT '姓名',
score int NOT NULL COMMENT '成績(jī)'
)CHARACTER SET utf8 COLLATE utf8_general_ci;
INSERT INTO students(name,score)VALUES
('嘟嘟',99),
('吱吱',67),
('哦莫',59);
-
把表中 name 為嘟嘟的 score值全部修改為100。
? ? ? ?代碼及輸出結(jié)果為:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-859264.html
#使用where
update students
set score = 100
where name = '嘟嘟';
-
把表中?id>=2的所有行中 score等于59的全部修改為0,name 中‘嘟’的修改為‘七’
? ? ? 代碼及輸出結(jié)果為:
update students
set score = replace(score,59,0),
name = replace(name,'吱','七')
where id >=2;
-
表中score小于60的score字段全部改為0,否則改為100,name字段中的名字改為不及格,否則改為及格
? ? ? 代碼及輸出結(jié)果為:
--- 批量更新多值 + if
update students
set
score = if(score < 60,0,100),
name = if(score < 60,'不及格','及格');
-
把表中score小于60的score字段全部改為0,name字段中的名字改為不及格;score大于等于90的score字段全部改為2,name字段中的名字改為優(yōu)秀;score大于等于60小于90的score字段全部改為1,name字段中的名字改為良好。
? ? ? ?代碼及輸出結(jié)果為:
#批量更新多值 + 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;
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-859264.html
到了這里,關(guān)于Mysql——update更新數(shù)據(jù)的方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!