2011-07-18 16 views
6

任何想法如何更新列,但只有row number=1row number=10例如?SQL Server如何更新所需行號的列

+1

你能否提供更多的信息,表模式,也許你的努力實現的問題。 – RubbleFord

+4

行1到10必須是可識別的。沒有暗示或假定的順序,除非有ORDER BY某處 – gbn

+0

不幸的是它是SQL Server 2000! – largo68

回答

1

一般來說,在SQL Server Update語句應爲

Update <Table Name> Set <Column Name> = <Value> where <Search Condition>. 
+0

謝謝但是其中 = 是無效的! – largo68

+0

然後你需要解釋你如何知道哪一行是「行號」1,什麼行是「行號」2等 –

4

此使用派生表到要更新10行隔離。請注意,他們都一個ORDER BY在他們確定了10行

UPDATE 
    T 
SET 
    SomeColumn = @newValue --or constant etc 
FROM 
    (
    SELECT 
     *, 
     ROW_NUMBER() OVER (ORDER BY something) AS rn 
    FROM 
     SomeTable 
    WHERE 
     ... 
    ) T 
WHERE 
    rn <= 10 
+0

當試圖第二個例子時我得到這個錯誤消息:Msg 4428,Level 16,State 1,第1行 派生表't'不可更新,因爲該定義包含TOP子句。 – largo68

+0

@ largo68:刪除它 – gbn

+0

ROW_NUMBER(),OVER對於SQL Server 2000無效。除非問題標記錯誤。 –