我正在尝试更新表格中的所有记录。在阅读记录时,我需要用当前记录中的NEXT记录的值更新当前记录中的一列。问题在于更新需要按照指定的顺序完成。以特定顺序更新记录
我在想这样的事情...
Update t1
Set col1 = (select LEAD(col2,1) OVER (ORDER BY col3, col4, col5)
from t1);
这并不编译,但你明白我开车...任何想法?
...更新
这peice的不顺利运行,但只能写入空值
Update t1 A
Set t1.col1 = (select LEAD(col2,1) OVER (ORDER BY col3, col4, col5)
from t1 B
where A.col3 = B.col3 AND
A.col4 = B.col4 AND
A.col5 = B.col5);
你是什么意思“更新需要按照指定的顺序完成”?你是否试图控制SQL语句实际改变各个块的顺序?或者你是否只是说'LEAD'函数需要一个指定的'ORDER BY'子句才能找到正确的“下一个记录”? –
@danihp:不需要临时表。 –
@JustinCave - 我需要LEAD函数从逻辑上正确的NEXT记录中返回一个值。这些是来自同一个表的记录,所以用于返回NEXT记录的键需要与用于执行Update语句的键相同。 – jojoberry