我正在尝试使用每行唯一值填充在其InterfaceID (INT)列中缺少值的所有行。

我正在尝试执行以下查询:

UPDATE prices SET interfaceID = (SELECT ISNULL(MAX(interfaceID),0) + 1 FROM prices)
       WHERE interfaceID IS null

我希望对每一行都评估(SELECT ISNULL(MAX(interfaceID),0) + 1 FROM prices),但是只执行一次,因此所有受影响的行都将获得相同的值,而不是不同的值。

可以在单个查询中完成吗?

最佳答案

declare @i int  = SELECT ISNULL(MAX(interfaceID),0) + 1 FROM prices


update prices
set interfaceID  = @i , @i = @i + 1
where interfaceID is null

应该做的工作

08-19 10:46