sql批量修改数据
更新update语句分为三部分:更新的表、列名和新的值、确定更新哪些行的过滤条件。
如果是整列修改的话,不用加任何条件。假设要将所有学生的成绩都改为及格,SQL语句要这么写:Update成绩表 Set 成绩='及格'
如果只是修改部分数据,要加上条件。假设要将Jason和Annie的成绩改为及格,SQL语句要这么写:Update成绩表 Set 成绩='及格' where 姓名 in('Jason','Annie')
(1)sql批量修改数据扩展阅读:
SQL更新的时候,还存在需要更新多列的情况,SQL语句要枯含这么写:Update成绩表正败和 Set 成绩='及格',表现='良好', 通过='Yes'where 姓名 in('Jason','Annie')
SQL更新的举盯时候,还存在连接其他表更新数据的情况,假设A表的历史成绩要去B表的提取,那么SQL语句要这样写:
UpdateA
Set A.历史成绩=B.历史成绩
From 学生总成绩表 as A
Left join 学生历史成绩表 as B
on A.学生姓名=B.学生姓名
B. SQL SERVER数据库根据其他某个表的字段批量修改数据
UPDATE A
SET A1 = t2.B2 ,
A2 = t2.C1
FROM A INNER JOIN (
SELECT B.B1,B.B2,C.C1
FROM B left join C on B.B3 = C.C3) t2
ON A.A3 = t2.B1
WHERE A.A4 = 1;
UPDATE oaaccounts
SET F_UseType = t2.F_Type
FROM oaaccounts INNER JOIN OaPayOnline t2
ON F_Order_Id = t2.acid
C. 如何在SQL数据库批量修改一列数据
具体操作步骤如下:
1. 如果单元格中的数挨在一起,先选中一个单元格并按住鼠标右键,再拖动鼠标,即可选中所有数字。如单元格分散在各处,则先左手按住Ctrl件,右手逐一点击需选中的数即可。
2. 在选中的最后一个单元格中,输入需修改的数据后,再同时按住Ctrl+enter件,这样,所有被选中的数字就批量修改了。
D. sql批量修改数据
update a set a.名称伏喊=a.名称||'洞罩锁' where trunc(a.时间)=date'2014-05-01'缺颤野;
E. sql 将某列字段的值批量替换或修改
UPDATE dogmall(表结构) SET pathimg (字段名) = replace( pathimg (字段名),'_.webp', '')
ps: 注意,在测试的时候,请在 update 语句末尾加上 where xxx = xx 条件对某条数据 进行单独测试,避免全部内容修改了,但不如意,造成不可挽回的后果。
当我爬去了网络图片路径后,得到的后缀名是 '.webp'。这格式绝贺
我需要统一删除或者替换为 .jpg 才能正常访问
利用上边的语并扰派句,能全李举部替换。
F. sql 批量修改数据
使用update 更新修改数据库数据,更改的结果集是多条数据则为批量修改。
语法格式如:
update 表格 set 列 = 更改值 where 筛选条件
例:
update table set a=1 --将table 中所以a列的值改为 1
update table set a=1 where b=2 --将table 中列b=2的记录中a列的值改为 1
G. sql 批量修改数据
---脚本适用于sql 2005 sp3及以上
declare @sql nvarchar(max),@search nvarchar(100),@update nvarchar(100)
set @search='张3'
set @update='李4'
--set @sql='declear @sql nvarchar(4000)'
--select @sql='select @sql=''扒搭镇select '''
set @sql=''
select @sql=@sql+'update '+sysobjects.name+' set '+syscolumns.name+'='''+@update+''春粗' where '+syscolumns.name+'='''+@search+''' ' from sysobjects inner join syscolumns on sysobjects.id=syscolumns.id where sysobjects.xtype='U' and syscolumns.xtype in (35,99,167,175,231,239)
exec sp_executesql @sql
CREATE procere sp_columnsearch
@search varchar(100),
@update varchar(100)=''
as
begin
---脚本适用于sql 2005 sp3及以上
declare @sql nvarchar(max)
select @sql=@sql+'update '+sysobjects.name+' set '+syscolumns.name+'='''+@update+''' where '+syscolumns.name+'='''+@search+''' ' from sysobjects inner join syscolumns on sysobjects.id=syscolumns.id where sysobjects.xtype='U' and syscolumns.xtype in (35,99,167,175,231,239)
exec sp_executesql @sql
end
经检查,没有问题,除非选错了库运行或者
update aaa set bb='abc' where bb='123'
在你枝棚的库里面本来就不能匹配
H. SQL中。如何批量修改表中的某一项数据的一部分
最好的方法是批量修改,即每次修改5000条(一次修改不要超过一万条,否则影响性能).
虽然在11g中,我们也可以选择使用merge命令,但你的这种情况最好先修改一部分然后看看影响,毕竟在生产环境作这样的操作风险很大。
如果是误操作,最好还是请DBA来恢复,虽然这样做会被挨骂,但总比错上加错,最后连挨骂的机会都没有要好得多。
如果对这些修改真的有信心,而只是从性能考虑,那可以用下面的方法(pk_col 是表的主键):
merge into xxx aa
using (select pk_col from xxx) bb
on (aa.pk_col=bb.pk_col)
when matched then
update set aa.datatype=66 where aa.datatype is null;
I. sql中批量修改数据问题
update cstable set numberstr=replace(numberstr,"01","")
//表名cstable
//字段名numberstr
J. sql 批量修改数据
绝闭咐对是你要的效果
以下代码直接可执行
此代码为临时代码
执行完毕后不会有任何数据残存
请您放心使用
代码:
declare @aa table
(
maturityTime datetime, --过期时间
isMaturity int default(0) --是否过期 0为未过期 1 为过期
)
insert @aa (maturityTime)
select dateadd(mm,-4,getdate()) union
select '2009-12-12' union
select getdate() union
select getdate() union
select '2010-1-2' union
select dateadd(mm,-3,getdate()) union
select '2009-12-1' union
select getdate() union
select dateadd(mm,-2,getdate()) union
select '2009-11-5' union
select dateadd(mm,-1,getdate())
select * from @aa
update @aa set isMaturity=1 where datediff(dd,maturityTime,getdate())>0
/*说明 datediff是取宏蠢两个时间的差额 dd 表示 天 相差的轿绝纯天数<0表示过期
表达式的意思是 maturityTime (表中时间)-getdate()(当前时间)<0 就过期
比如 从 09 年 1月 到 2009年 5 月 的天数 - 从 09 年 1月 到现在的天数 是<0的 那么 他就是过期的
*/
select * from @aa
代码到此结束