【发布时间】:2014-05-29 12:42:21
【问题描述】:
我尝试使用 row_number 函数为 MS SQL 2000 编写 SQL 语法... SQL 2000 不支持 OVER 的 row_number,所以我尝试了这段代码....
当我写这篇文章时:
SELECT P1.*,
(SELECT COUNT(*) FROM Persons P2
WHERE P2.Value<= P1.Value ) AS NewValue
FROM Persons P1
WHERE ...
一切正常,我得到一个带有 row_numbers 的新列 'NewValue'...
但是,当我尝试用这个新列更新表中的一列时,我总是得到一个错误:
“派生表不可更新,因为派生表的列是派生的或不变的……”????怎么了?
这是一个完整的语法:
UPDATE t
SET t.Value= t.NewValue
FROM (SELECT P1.*,
(SELECT COUNT(*) FROM Persons P2
WHERE P2.Value<= P1.Value) AS NewValue
FROM Persons P1) t
WHERE ....
'Value' 是表中的一列,我无法使用 'NewValue' 列中的值进行更新...
非常感谢!!! :)
【问题讨论】:
标签: sql sql-server-2000 row-number