最近项目上经常需要去通过SQL脚本去刷数据库历史数据的情况
--第一种:简单更新的SQL语句
update 表名 set 字段 = 更新值 where 条件
--第一种方式简单,但是个别复杂的情况难以直接更新
--第二种:复杂的通过脚本写逻辑
DECLARE
@ID VARCHAR(10),
@TEXT VARCHAR(7999),
@JMTX VARCHAR(7999)
DECLARE My_Cursor CURSOR --定义游标
FOR (select xx字段 from xxx表 where 条件) --查出需要的数据放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor into @ID; --读取第一行数据
WHILE @@FETCH_STATUS = 0
BEGIN
--遍历ID查询单条数据
set @TEXT=(select xx字段1 from xxx表1 where xx字段2 = @ID);
if(@TEXT IS null)
begin
--更新语句
update 表名 set 字段 = 更新值 where 条件
end
END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
--第二种方式的话稍微比较麻烦
--第三种:简易更新语句升级版(在需要更新值的值查出来放到同一行数据中以便获取)
update t1 set t1.zbbm1 = t2.cbbm
from xx表1 t1
inner join (select requestid,cbbm from xx表2) t2 on t1.lcid = t2.requestid
where (t1.zbbm1 is null or LTrim(RTrim(t1.zbbm1)) = '')
还有什么更好的SQL脚本写法也可以分享一下啦