问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SQL 如何用update同时更新多个数据?

发布网友 发布时间:2022-04-08 01:38

我来回答

6个回答

懂视网 时间:2022-04-08 06:00

执行一条sql语句update多条记录实现思路

如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?本文以一个示例向大家讲解下如何实现如标题所示的情况,有此需求的朋友可以了解下

通常情况下,我们会使用以下SQL语句来更新字段值:

UPDATE mytable SET myfield=‘value‘ WHERE other_field=‘other_value‘;

但是,如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?举个例子,我的博客有三个分类目录(免费资源、教程指南、橱窗展示),这些分类目录的信息存储在数据库表categories中,并且设置了显示顺序字段display_order,每个分类占一行记录。如果我想重新编排这些分类目录的顺序,例如改成(教程指南、橱窗展示、免费资源),这时就需要更新categories表相应行的display_order字段,这就涉及到更新多行记录的问题了,刚开始你可能会想到使用循环执行多条UPDATE语句的方式,就像以下的php程序示例:

foreach ($display_order as $id => $ordinal) { $sql="UPDATE categories SET display_order = $ordinal WHERE id = $id"; 
 mysql_query($sql); 
}

这种方法并没有什么任何错误,并且代码简单易懂,但是在循环语句中执行了不止一次SQL查询,在做系统优化的时候,我们总是想尽可能的减少数据库查询的次数,以减少资源占用,同时可以提高系统速度。
幸运的是,还有更好的解决方案,下面列举两种常用的方案只不过SQL语句稍微复杂点,但是只需执行一次查询即可,语法如下:

第一种:IF–THEN语句结合

UPDATE mytable SET myfield = CASE other_field WHEN 1 THEN ‘value‘ WHEN 2 THEN ‘value‘ WHEN 3 THEN ‘value‘ END WHERE id IN (1,2,3) 

回到我们刚才的分类目录的例子,我们可以使用以下SQL语句:

UPDATE categories SET display_order = CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHEN 3 THEN 5 END, 
title = CASE id WHEN 1 THEN ‘New Title 1‘ WHEN 2 THEN ‘New Title 2‘ WHEN 3 THEN ‘New Title 3‘ END WHERE id IN (1,2,3) 

以上方案大大减少了数据库的查询操作次数,大大节约了系统资源,但是该怎样与我们的编程语言结合起来呢?我们还是用刚才分类目录的例子,以下是php的程序示例:

$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语句  } $sql .= "END WHERE id IN ($ids)"; echo $sql; 
mysql_query($sql);

在这个例子中总共更新了8行数据,但是只执行了一次数据库查询,相比于循环执行8次UPDATE语句,以上例子所节约的时间可以说是微不足道的。但是想想,当你需要更新10,0000或者更多行记录时,你会发现这其中的好处!唯一要注意的问题是SQL语句的长度,需要考虑程序运行环境所支持的字符串长度,我目前获得的数据:SQL语句长度达到1,000,960在php中仍然可以顺利执行,我查询了php文档并没有发现明确规定字符串最大长度。

第二种INSERT方式

MySql中INSERT语法具有一个条件DUPLICATE KEY UPDATE,这个语法和适合用在需要判断记录是否存在,不存在则插入存在则更新的记录。
基于上面这种情况,针对更新记录,仍然使用insert语句,不过限制主键重复时,更新字段。如下:

INSERT INTO t_member (id, name, email) VALUES (1, ‘nick‘, ‘nick@126.com‘), 
(4, ‘angel‘,‘angel@163.com‘), 
(7, ‘brank‘,‘ba198@126.com‘) ON DUPLICATE KEY UPDATE name=VALUES(name), email=VALUES(email);

注意: ON DUPLICATE KEY UPDATE只是MySQL的特有语法,并不是SQL标准语法!

文章来源:脚本之家

执行一条sql语句update多条记录实现思路

标签:

热心网友 时间:2022-04-08 03:08

如果是把表所有0都改成1,语句为:update  表名 set zam =1 

示例:update [Test].[dbo].[Table_Test] set zam=1 

执行前结果为:

执行后结果为:

如果只是部分改为1,则需要加入判断条件where,语句为:update  表名 set zam =1  where ....

示例:update [Test].[dbo].[Table_Test] set zam=1
where name ='tom' or name='jack' or name ='lucy'

执行后结果:

扩展资料:

UPDATE概述

用途:更新表中原有数据

单独使用,使用where匹配字段

set后面,更新字段值,既可以一次一项,也可以一次多项

例如1,

Update table_name Set column_name = new_value Where column_name = some_value

参考资料:

百度百科:update

热心网友 时间:2022-04-08 04:26

 如果是整表修改的话,不加任何条件:

update  tabname set zam = 1;

如果*的话:

update  tabname set zam = 1 where name in ('tom','jack','lucy','mary');

热心网友 时间:2022-04-08 06:00

UPDATE table_name SET zam = 1 WHERE NAME IN('tom','jack','lucy','mary')
是不是你想要的追问呃,我也没表达清楚自己的意思,其实我是想四次update压缩为一次,不知道怎么做

热心网友 时间:2022-04-08 07:52

update table set zam=1 where name in ('tom','jack','luck','mary')

热心网友 时间:2022-04-08 10:00

UPDATE tabname 
    SET zam = CASE name
     WHEN ‘tom’ THEN 1 
     WHEN ‘jack’THEN 2
     WHEN ‘lucy’THEN 3
     WHEN ‘mary’THEN 4
    END
 WHERE name IN('tom','jack','lucy','mary')

SQL 如何用update同时更新多个数据?

如果只是部分改为1,则需要加入判断条件where,语句为:update 表名 set zam =1 where ...示例:update [Test].[dbo].[Table_Test] set zam=1 where name ='tom' or name='jack' or name ='lucy'执行后结果:

SQL 用update语句一次更新多个字段应该怎么写

SQL 用update语句一次更新多个字段语句格式如下:UPDATE 表名 SET 列名1=值,列名2=值2,... [WHERE 条件]多个字段时可以用逗号隔开,每个 字段名=值 就是给字段赋值,其后的WHERE 条件语句可以用也可以不用

SQL 用update语句一次更新多个字段应该怎么写

方法如下:就是在不同的字段之间加逗号,不限制字段的个数。例如:a,b,c 是表t的3个字段,通过 条件1 和 条件2 可以分别定位到一条记录。select a,b,c from t where 条件1select a,b,c from t where 条件2现在想把条件2 对应的记录分别修改位条件1对应的记录。update t set a =(select ...

SQL 用update语句一次更新多个字段应该怎么写

update 表名 set(字段1,字段2,字段3,...) = (select 数值1,数值2,数值3,...) where 条件 多个字段可以使用逗号隔开,每一个 字段名=值 就是赋值,其后的WHERE 条件语句可加可不加。

sql中的update如何根据不同条件修改多条数据的同一列

1、如果是整列修改的话,不用加任何条件。假设要将所有学生的成绩都改为及格,SQL语句要这么写:Update成绩表Set成绩=及格如果只是修改部分数据,要加上条件。2、首先update更新一个字段的时候,你要确保这个条件就是你想要的数据,因此,你验证一下,你以where为条件select出来看看。看你的语句明显就不...

SQL 用update语句一次更新多个字段应该怎么写

update table set a='1',b='2',c='3' where d='1'修改的语义:update 表 set 列名1=你要修改的值1,列名2=值2 where 条件 (填写修改值的时候 注意对应列名的类型 )如果你加了条件 就是修改这个条件下的 对应列 如果你没加条件 则是对整个表的这些列都进行修改 ...

sql 请教update语句in多个值时,进行多次更新

在数据库的操作中,更新数据,是很常见的情况。其中sql 请教update语句in多个值时,进行多次更新的方法为:1、创建一个临时表,用于演示sqlserver语法中update更新修改使用方法。2、创建另外一个临时表,用于演示如何将一个临时表的数据更新到另外一个临时表。3、往临时表中插入几行测试数据,其中的Total栏...

SQL数据库如何同时修改一张表里的多个数据

1、首先在桌面上,点击“Management Studio”图标。2、接着在窗口上,点击左上角工具栏里“新建查询”按钮。3、再者在窗口上,输入同时修改一张表里的多个数据的sql语句“update test2 set grade = 100, no = 20”。4、其次在窗口上,点击左上方工具栏里“执行”按钮。5、最后在窗口上,显示同时...

多个SQL语句同时Update怎么优化?急!!!

-- for M$SQL 2k+UPDATE A SET CMEMBER = B.cnt, MIDDLE_NUM = B.m_cntFROM G_BASIC AJOIN ( select GROUPID , count(1) as cnt , count(case middle_flag when '是' then 1 end) as m_cnt from g_member where FLAG = '1' group by GROUPID) ...

sql中的update如何根据不同条件修改多条数据的同一列

后面跟一个子查询即可。现在需要同时更新2个字段,最不经过大脑思考的方法就是 “为每个 set 后面都跟一个子查询”,但是假如要 set 十个字段或者更多字段,很显然,这样在性能上是很不合适的方法。同时更新多个字段在MYSQL和ORACLE中的方法是不一样,MYSQL需要连接表,ORACLE使用 set(...) 即可。

update更新多行数据 怎么用update更新表数据 update更新数据 update更新多个字段 update多条数据 update 另一个表的数据 数据库update怎么用 update 三种更新用法 数据库中update的用法
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苏州一级建造师能买吗? 我是苏州2013一级建造师考生,9月15日最后一门考试把身份证忘在课桌上... 二级建造师 报名 现场确认些什么 会不会问你工作内容什么的,试探你是否... 根据我国《刑法》的规定,下列属于公共财产的是()。 苏州一级建造师报名时间是不是已经过了,要是没有赶上,今年还能有什么其 ... 盗取国家公共财产罪 我是苏州2013一级建造师考生,9月15日最后一场把身份证忘在考场了,我... 二级建造师网上报名已经通过'请问现场初审能找人代替吗我在苏州报名的... 什么是刑法中规定的公共财产,公民私人所有的财产 犯罪构成要件公私财物是什么? 东芝电梯故障码怎么查 xs max升级13.3? 9月23号刚买的iPhonexsmax256G被舍友摔坏该怎么索赔 苹果手机xsmax,掉水里,屏幕坏了,装修原装1500,有必要吗? 15580a是s码吗XSma iPhonexsmax原内屏可以给12promax用吗? 无锁苹果手机xsmaⅩ国行,双卡,全新卖多少钱? 苹果手机xsmaⅹMT732ZA是不是国行? 写春的散文片段2个,要写出处 描写春天的散文,要同学写的 如何用散文或诗歌描写春天,尤其是北方的春天 关于春的散文 三篇 春日雨后的清晨散文 描写春天的散文一篇. 描写早晨的美文100字左右 电脑里QQ飞车录像文件怎么看 民生银行信用卡逾期25000,近期还了20000,银行会立案吗? 为什么我的支付宝登陆不了淘宝,还不能在淘宝上支付,直接在银行里扣钱? 我欠民生银行信用卡14000元没还银行打电话来说在不还就要报警,银行真的会报警吗? 欠民生银行信用卡钱怎么办他们已经报案了,会坐牢吗?有什么办法协商解决吗? 天线SMA接口与TNC接口有什么区别,如果我的天线是SMA接口的,要加个底座,底座应该是什么接口? 能否把下面指标弄成选股指标,要下面出现深蓝和亮红色的股票 九江的朋友 ,sma接口在哪里可以买到啊 导致猪裂蹄病的原因有哪些? 母猪为什么会裂蹄? 怎么微信视频,打不开手电筒?或者发小视频,手电筒打不开微信备 - 信息提示 苹果手机视频聊天怎么打不开手机电筒? 猪蹄为什么炖一个半小时就裂开了,然后骨头也出来了? 红米note3微信小视频的时候手电筒打不开,以前用三星手机是兼容的呀 历史上有没有孙茂才这个人? 农民把生石灰撒到猪圈里,猪蹄出现干裂、灼烧等现象的原因 图片上说的是对的还是错的 我的vivox21手机之前可以微信视频同时打开手电筒,为什么现在不可以了? 将生石灰撒在猪圈里消毒,一段时间后发现猪的猪蹄部干燥开裂,有的甚至灼伤,原因是? 五十岁女人染什么颜色头发显年轻 炖好的猪蹄为什么有裂缝 空心字转换器的网址是多少? 空心英文字体 女朋友问我本人好看还是照片好看,如何回答才是正确回答?说本人吧,