假设我有一个包含列Id
和TransactionNo
的表。
Id
列的ID范围从1到3000。
我需要做的是将TransactionNo
列的ID更新为1000到2000。
换句话说,TransactionNo
只能为Id
进行更新,范围为1000到2000,且每个Id
向上递增一个(++ 1)。
由于这是一项繁琐的工作,所以我正在寻找一个while循环解决方案来更新此ID范围内的所有TransactionNo
。
答案 0 :(得分:2)
如果您的id
序列中有间隔,并且您想要连续的序列用于生成的列,则可以使用row_number()
,如下所示:
update t set trn=rn from
(select trn,row_number()
over (order by id) rn
from t1
where id>=1000 and id<=2000) t
答案 1 :(得分:1)
答案 2 :(得分:1)
我认为您正在寻找以下查询。
UPDATE table
SET transactionno = transactionno + 1
WHERE id >= 1000
AND id <= 2000
答案 3 :(得分:0)
我认为您需要这个:
Intent.FLAG_RECEIVER_FOREGROUND
它保留update tablename
set transactionno = (select transactionno from tablename where id = 1000) + id - 1000
where id > 1000 and id <= 2000
中的transactionno
,并将其余的1从id = 1000
增大到id = 1001
。
参见demo
或使用CTE:
id = 2000
请参见demo
答案 4 :(得分:0)
declare @startID = 1000
while(@startID <= 2000)
begin
update table set TransactionNo = value where Id = @startID;
set @StartID += 1;
end
答案 5 :(得分:0)
尝试一下:
UPDATE TableName
SET TransactionNo = Id
WHERE Id BETWEEN 1000 AND 2000
注意:您可以使用所需的任何值来更改此赋值语句(即= Id
)。