SQL - 通过 Foreach 在 select 结果上获取和更新下一条记录的值
SQL - Get and update value from next record by Foreach on select result
我在 SQL 方面经验不多,所以我的问题可能很简单:
在 SELECT 查询的结果中,我需要更新所有记录,以便每条记录获得下一条记录中的值,如屏幕截图所示。
我希望有一个简单易用的代码。
注:我有附码:
SELECT ID, Title ,IDxNumber, LEAD(IdxNumber,1,0) Over(order by idxnumber) AS HotCode from MYTABLE
它可以显示 数据。但我想更新 table 本身的HotCode 列中的数据,而不仅仅是显示它们。
谢谢
在 SQL 服务器上,我们可以使用 updatable CTE。假设 HotCode
列已经存在于您的 table:
WITH cte AS (
SELECT *, LEAD(IdxNumber, 1, 0) OVER (ORDER BY idxnumber) AS HotCodeNew
FROM MYTABLE
)
UPDATE cte
SET HotCode = HotCodeNew;
对不起,如果我没理解正确,是这样的吗?
UPDATE MYTABLE SET something = table.something
FROM (
SELECT ID, Title ,IDxNumber,
LEAD(IdxNumber,1,0) Over(order by idxnumber)
AS HotCode FROM MYTABLE
) table
WHERE MYTABLE.id = table.id
我在 SQL 方面经验不多,所以我的问题可能很简单: 在 SELECT 查询的结果中,我需要更新所有记录,以便每条记录获得下一条记录中的值,如屏幕截图所示。 我希望有一个简单易用的代码。
注:我有附码:
SELECT ID, Title ,IDxNumber, LEAD(IdxNumber,1,0) Over(order by idxnumber) AS HotCode from MYTABLE
它可以显示 数据。但我想更新 table 本身的HotCode 列中的数据,而不仅仅是显示它们。
谢谢
在 SQL 服务器上,我们可以使用 updatable CTE。假设 HotCode
列已经存在于您的 table:
WITH cte AS (
SELECT *, LEAD(IdxNumber, 1, 0) OVER (ORDER BY idxnumber) AS HotCodeNew
FROM MYTABLE
)
UPDATE cte
SET HotCode = HotCodeNew;
对不起,如果我没理解正确,是这样的吗?
UPDATE MYTABLE SET something = table.something
FROM (
SELECT ID, Title ,IDxNumber,
LEAD(IdxNumber,1,0) Over(order by idxnumber)
AS HotCode FROM MYTABLE
) table
WHERE MYTABLE.id = table.id