sql数据表循环

问题描述,在SQL数据库中有很多数据,其中的一列,需要根据其它几列的值进行更新,比如,如果其值比某列小,用其他几列的最大值再加1。要对现有数据库中的所有数据都进行更新。

考虑用循环进行处理。从网上找到的参考方法如下。其思路是,将原来的表中的几个关键列读出来存入表变量中,作为循环更新时的索引。

循环时,从表变量中逐行读出列号信息,根据其列号去处理原表中的信息,处理完成,从表变量中删除该行。

按这种思路很方便的解决了我的问题。

使用表变量

  下面这种方法是使用表变量的方式实现的,代码如下。

-- 方法2:使用表变量
-- 声明表变量

DECLARE @temp TABLE
(
empid INT,
 firstname NVARCHAR(10),
 lastname NVARCHAR(20)
);

-- 将源表中的数据插入到表变量中
INSERT INTO @temp(empid, firstname, lastname )
SELECT empid,firstname,lastname FROM HR.Employees
ORDER BY empid;

-- 声明变量
DECLARE
@empid AS INT,
 @firstname AS NVARCHAR(10),
@lastname AS NVARCHAR(20);

WHILE EXISTS(SELECT empid FROM @temp)
BEGIN
 -- 也可以使用top 1
SET ROWCOUNT 1
SELECT @empid= empid, @firstname= firstname,@lastname= lastname FROM @temp;
 UPDATE HR.Employees SET fullname= @firstname+' '+@lastname WHERE empid=@empid;
SET ROWCOUNT 0

 DELETE FROM @temp WHERE empid=@empid;
END

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值