【发布时间】:2019-10-26 01:58:22
【问题描述】:
在我的场景中,我想在 SQL 中循环查询并需要更新详细信息。我有一个名为employees 的员工表,每个员工都有empID 作为主键。我想从将empID 作为外键的empAddress 表中获取每个员工的地址信息。我想将 ThumbID 值更新为 newID() 给每个员工。我怎样才能使用 sql 做到这一点?我已经尝试过使用 while 循环,但不知道如何获取 empID 来更新地址信息。我已经添加了我尝试过的示例代码。
Select * from employees
declare @emp_id int,@i int,@dataCount int;
set @dataCount = @@ROWCOUNT
Set @i = 1
WHILE @dataCount >= @i
BEGIN
print @i
select @emp_id = empId from employees
Update empAddress set thumbID = newID() where empId = @emp_id
Set @i = @i+1
END ;
请指导我如何在 SQL 代码中将 @emp_id 值作为动态值?我没有超强的 SQL 知识。提前致谢!
【问题讨论】:
-
为什么要使用
WHILE循环?UPDATE empAddress SET thumbID = NEWID();有什么问题?该查询无论如何都会更新每一行,那么为什么要通过痛苦的行来行呢? -
样本数据和期望的结果真的很有帮助。例如,您是否希望同一员工的所有地址都获得相同的
thumbId? -
SQL 是一种基于集合的语言。为什么是 while 循环?
-
@Larnu 这里我提到了功能代码的特定部分。实际上我们不需要'WHILE''来进行正常更新。
-
@GordonLinoff 不,
employee和thumbId会有所不同。员工的价值不一样。
标签: sql sql-server while-loop ssms