mysql批量更新语句

  1. 一条SQL语句实现批量更新数据,update结合case、when和then的使用。最优选

UPDATE mytable SET

myfield = CASE id

WHEN 1 THEN '3'

WHEN 2 THEN '4'

WHEN 3 THEN '5'

END

WHERE id IN (1,2,3);

详解:这句sql的意思是,更新myfield 字段,如果id=1 则myfield 的值为3,如果id=2 则 myfield 的值为4,如果id=3 则 myfield 的值为5。

  1. 直接update执行强制更新。性能问题
sql 复制代码
UPDATE \`asset\` SET \`state\` = '2' WHERE (system\_id in ( '111111111111111','12222222222','333333333','4444444444'))
  1. replace into。 操作本质是对重复的记录先deleteinsert。如果更新的字段不全会将缺失的字段置为缺省值,插入之后,数据的自增主键id会改变,执行一次,实际影响行数1行,慎用!!!

**如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 否则,直接插入新数据。**插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据

用法一:插入语句

sql 复制代码
replace INTO \`user\` ( \`user\`, \`pwd\`, \`age\`) VALUES ( 'test1', '111', 11);

用法二:用于复制数据

sql 复制代码
replace INTO \`user\` ( \`user\`, \`pwd\`, \`age\`) select user,pwd,age from test

用法三:用于更新数据,会根据唯一索引来更新

sql 复制代码
replace INTO \`lvxx\`.\`user\` set user = 'test1' ,age = 11,pwd = '33333';
  1. Assign FirstorCreate 语句

Attrs: 如果没有找到记录,则使用Attrs中的数据来初始化一条记录:

//使用attrs来初始化参数,如果未找到数据则使用attrs中的数据来初始化一条

//注意:attrs 必须 要和FirstOrInit 或者 FirstOrCreate 连用

db.Where(User{Name:"xiaoming"}).Attrs(User{Name:"xiaoming",Age:12}).FirstOrInit(&u)

Go orm框架gorm学习_rickiyang的博客-CSDN博客_gorm分表

相关推荐
gugucoding2 分钟前
38. 【Java】Stream API(下):高级操作与性能
java·开发语言
心平气和量大福大29 分钟前
android-实例-蒲公英-更新与安装-5-签名与生成APK
android·java·开发语言
雾时之林31 分钟前
Linux--软件管理、源码包安装
linux·服务器·数据库
952361 小时前
Spring-cloud配置中心
java·spring·spring cloud·微服务
ydd1001001 小时前
寻找两个正序数组的中位数 Java 题解,二分分割详解
java·开发语言
老纪的技术唠嗑局2 小时前
超级干货分享:中小企业使用 OceanBase 实践经验汇总
数据库
CLOUD ACE2 小时前
谷歌云代理|零售商Target 如何利用 Spanner Graph 提升零售发现体验并将数据库维护成本降低 50%
数据库·零售
真上帝的左手3 小时前
10. 软件设计&架构-Spring Security 7 整合CAS SSO 单点登录
java·spring·架构·sso
AI大模型-小雄3 小时前
Codex写分页接口为什么越翻越慢?用Cursor Pagination解决重复与漏数据
大数据·数据库·elasticsearch·搜索引擎·chatgpt·后端开发·codex
Zane19943 小时前
单例线程安全、生产者消费者、死锁:并发面试三连问串讲
java·后端