mysql update case 更新字段值不固定的操作
在處理批量更新某些數(shù)據(jù)的時(shí)候,如果跟你更新的字段的值都一樣,比如某個(gè)狀態(tài)都更新為某個(gè)固定值,
直接用update table set xxx=xxx where xxx=xxx 這種即可如果要更新的字段的值是不固定的,用下面的update case when where 這種方式就更方便了
UPDATE tablename set a1= CASE userid WHEN 1 THEN a1+5 WHEN 2 THEN a1+2 END,a2= CASE userid WHEN 1 THEN a2-5 WHEN 2 THEN a2-2ENDwhere userid in (1,2)
用update case when 更新的時(shí)候一定要帶上 where 條件,否則會(huì)更新整張表,后果很嚴(yán)重。
補(bǔ)充:Mysql update && case when 聯(lián)合使用 批量更新
直接碼sql:
room字段值為 18F-N01 這種格式UPDATE t_report SET room = CONCAT_WS( ’-’, SUBSTRING_INDEX(room, ’-’, 1) , CASE SUBSTRING_INDEX(room, ’-’, -1) WHEN ’N01’ THEN ’N02’ WHEN ’N02’ THEN ’N01’ WHEN ’N03’ THEN ’N11’ WHEN ’N04’ THEN ’N10’ WHEN ’N05’ THEN ’N09’ WHEN ’N06’ THEN ’N08’ WHEN ’N07’ THEN ’N07’ WHEN ’N08’ THEN ’N06’ WHEN ’N09’ THEN ’N05’ WHEN ’N10’ THEN ’N03’ END )WHERE rid IN ( SELECT rid FROM t_report WHERE rdate = ’190306’ AND ordinal BETWEEN ’23’ AND ’32’)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章:
1. 為SQLite3提供一個(gè)ANSI到UTF8的互轉(zhuǎn)函數(shù)2. Mysql/MariaDB啟動(dòng)時(shí)處于進(jìn)度條狀態(tài)導(dǎo)致啟動(dòng)失敗的原因及解決辦法3. SQLite 性能優(yōu)化實(shí)例分享4. MySQL 使用SQL語句修改表名的實(shí)現(xiàn)5. Oracle數(shù)據(jù)庫(kù)如何獲取當(dāng)前自然周,當(dāng)前周的起始和結(jié)束日期6. 關(guān)于SQL表中drop table和delete table的區(qū)別7. mysql中根據(jù)已有的表來創(chuàng)建新表的三種方式(最新推薦)8. MySQL連表查詢分組去重的實(shí)現(xiàn)示例9. Access連接數(shù)據(jù)源(ODBC)配置(新手必知)10. Mybatis中處理特殊SQL處理邏輯解析
