2011-07-18 18 views
6

Masz pomysł, jak zaktualizować kolumnę, ale tylko dla row number=1 na row number=10 na przykład?Serwer SQL, jak zaktualizować kolumnę o żądany numer wiersza:

+1

można dać więcej informacji, schematu tabeli i być może problem starasz się osiągnąć. – RubbleFord

+4

wiersze od 1 do 10 muszą być identyfikowalne. Nie istnieje domniemana lub przyjęta kolejność, chyba że istnieje ZAMÓWIENIE PRZEZNACZONE gdzieś – gbn

+0

Unfortunmalety to SQL Server 2000! – largo68

Odpowiedz

1

Generalnie w SQL Server Update komunikat jest napisane jak

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

dzięki, ale Gdzie = nie jest prawidłowy! – largo68

+0

Następnie musisz wyjaśnić, skąd wiesz, który wiersz to "numer wiersza" 1, który wiersz to "numer wiersza" 2 itd. –

4

ta wykorzystuje tabelę pochodzącą wyizolować 10 wierszy, które chcesz zaktualizować. Zauważ, że zarówno mieć ORDER BY w nich określić 10 wierszy

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

podczas próby drugiego przykładu Otrzymuję komunikat o błędzie: Msg 4428, Poziom 16, Stan 1, Linia 1 Wyprowadzona tabela "t" nie jest aktualizowalna, ponieważ definicja zawiera klauzulę TOP. – largo68

+0

@ largo68: usunięto – gbn

+0

ROW_NUMBER(), OVER nie są poprawne dla SQL Server 2000. Chyba że pytanie jest oznaczone niepoprawnie. –

Powiązane problemy