mysql 批量replace into_replace into 批量更新
1、.replace into 批量更新
$sql = replace into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,'y');
test_tbl 为表名
id 对应的主键或者判断的唯一值,最好是主键,这样数据库检索较快
dr 对应这的字段,有多个字段可以在后面加上
2、insert into ...on duplicate key update批量更新
$sql = insert into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,'y') on duplicate key update dr=values(dr);
该方法只update重复记录,不会改变其他字段
3、创建临时表,先更新临时表,然后从临时表中update
create temporary table tmp(id int(4) primary key,dr varchar(50));
insert into tmp values (0,'gone'), (1,'xx'),...(m,'yy');
update test_tbl, tmp set test_tbl.dr=tmp.dr where test_tbl.id=tmp.id;
注意:这种方法需要用户有temporary 表的create 权限。
这方法涉及到两个数据表的操作,也有可能造成大压力
4、使用mysql 自带的语句构建批量更新
mysql 实现批量 可以用点小技巧来实现:
UPDATE yoiurtable
SET dingdan= CASEid
WHEN1 THEN 3WHEN2 THEN 4WHEN3 THEN 5
ENDWHERE id IN (1,2,3)
这句sql 的意思是,更新dingdan 字段,如果id=1 则dingdan 的值为3,如果id=2 则dingdan 的值为4…… where部分不影响代码的执行,但是会提高sql执行的效率。确保sql语句仅执行需要修改的行数,这里只有3条数据进行更新,而where子句确保只有3行数据执行。
如果更新多个值的话,只需要稍加修改:
UPDATE categories
SET dingdan= CASEid
WHEN1 THEN 3WHEN2 THEN 4WHEN3 THEN 5
END,title= CASEid
WHEN1 THEN 'New Title 1'WHEN2 THEN 'New Title 2'WHEN3 THEN 'New Title 3'
ENDWHERE id IN (1,2,3)
到这里,已经完成一条mysql语句更新多条记录了
然后代码示例如下:
$display_order = array(1 => 4,
2 => 1,
3 => 2,
4 => 3,
5 => 9,
6 => 5,
7 => 8,
8 => 9);$ids = implode(',', array_keys($display_order));$sql = "UPDATE categories SET display_order = CASE id ";foreach ($display_order as $id => $ordinal) {$sql .= sprintf("WHEN %d THEN %d ", $id, $ordinal);
}$sql .= "END WHERE id IN ($ids)";echo $sql;
该方法就是在数据进行处理时适合使用,能够让人清晰处理过程
对于数据库操作来说,最好的还是原生的sql语句执行效果最好,并且没有多次连接数据库的操作才好,所以优先的推荐还是方法2,insert into ...on duplicate key update
mysql 批量replace into_replace into 批量更新相关推荐
- mybatis批量插入(insert)和批量更新(update)
文章目录 一.Mybatis批量插入 二.批量更新 前言:这两天在做mybatis批量插入和更新的时候,对这块不是很清楚,所以今天写篇文章,巩固加深印象. 一.Mybatis批量插入 批量插入的sql ...
- batchupdate写法_mybatis执行批量插入insert和批量更新update
Mybatis批量插入和批量更新数据的资料相信大家从网上能查找到很多资料,本文重点总结一下mybatis执行批量插入insert和批量更新update数据.在mysql数据库中批量插入,如:inser ...
- linux中sed怎么反选,awk的批量replace功能
awk的批量replace功能 需求 现在需要替换一个文本 文本内容如下 $cat file MD_D1TS_1_060_I MD_D1TS_1_061_F MD_D1TS_1_062_U MD_D1 ...
- 【C#】MySQL数据库数据导入(批量Excel插入)
系列文章 [C#]代码模板生成工具 本文链接:https://blog.csdn.net/youcheng_ge/article/details/126890673 [C#]MySQL数据库导入工具( ...
- c mysql 批量插入_c#之mysql四种带事务批量插入
前言 对于像我这样的业务程序员开发一些表单内容是家常便饭的事情,说道表单 我们都避免不了多行内容的提交,多行内容保存,自然要用到数据库,如果循环打扰我数据库,数据库也会觉得很累,从而增加数据库服务器压 ...
- tp5大数据批量导入mysql_TP5框架下MySQL通过LOAD DATA INFILE批量导入数据详细操作
LOAD DATA INFILE 语句用法 参考手册 本文语句参数使用默认值 PHP: TP框架环境// 定义文件路径 $file_path = 'LOAD_DATA_LOCAL_INFILE.txt ...
- SqlBulkCopy与触发器,批量插入表(存在则更新,不存在则插入)
原文:SqlBulkCopy与触发器,批量插入表(存在则更新,不存在则插入) 临时表:Test /****** 对象: Table [dbo].[Test] 脚本日期: 05/10/2013 11:4 ...
- tp5 excel 导入 mysql_TP5框架下MySQL通过LOAD DATA INFILE批量导入数据详细操作
LOAD DATA INFILE 语句用法 参考手册 本文语句参数使用默认值 PHP: TP框架环境// 定义文件路径 $file_path = 'LOAD_DATA_LOCAL_INFILE.txt ...
- mysql循环load data_TP5框架下MySQL通过LOAD DATA INFILE批量导入数据详细操作
LOAD DATA INFILE 语句用法 参考手册 本文语句参数使用默认值 PHP: TP框架环境// 定义文件路径 $file_path = 'LOAD_DATA_LOCAL_INFILE.txt ...
最新文章
- SAP Netweaver 7.4 SR2 Application Java Installation
- ERROR 1222 (21000): The used SELECT statements have a different number of columns :
- linux truss strace ltrace 对比 诊断调试程序
- Ubuntu用户设置文件说明
- mysql 存储过程 查询结果 循环_在存储过程中从查询结果集中怎么循环
- python access_Python3 os.access() 方法
- 正则表达式2-测试代码
- 波卡生态数据基础设施组件Kylin Network与借贷平台DefiCliq达成合作
- 统计学硕士做了3年表格,多次跳槽失败,只因学不会数据工具
- 树莓派Linux内核编译选项如何开启TPM 2.0
- atitit.信息安全的控制总结o7
- VB 2010中Excel文件处理的一个奇怪问题
- aspectjweaver和aspectjrt的区别
- 台式计算机常用总线,计算机中常见的总线有哪些
- 【服务器】服务器运维必备软件;服务器安装环境、运维教程
- 我们将迎来另一个 VR 寒冬吗?
- 少儿平台e启学用户隐私协议
- 2021-11-02
- 华硕主板破Linux密码,解决华硕主板常见故障现象及方法
- yarn 编译环境时遇到的问题和解决方法
热门文章
- java切割输入流_IO流之切割合并文件
- 2017年你错过了哪些AI圈大事?最全盘点,值得收藏!
- 代做频谱分析,Map绘制 给出主要信号频率成分和相位,并据此重建信号; 绘制电机map图;
- 被口臭折磨到不敢张嘴!恋人嫌弃、朋友疏远、同事讨厌,还有救吗?
- mysql查询显示技巧_MYSQL SQL高级查询技巧
- leetcode/变位词组,变位词放一起
- C语言“按任意键退出”的实现方式
- python url解码_对python中url参数编码与解码的实例详解
- 玩转LSI SAS3阵列卡
- java传值给js 换行_JavaScript用document.write()输出换行的示例代码