# MSSQL Update Befehl - Anzahl des Resultsets einschränken



## Trolleule (6. Mai 2010)

Hallo,
ich arbeite zur Zeit mit einer Access 07 Datenbank und möchte auf eine bestimmte Anzahl eines Resultsets einen Update Befehl anwenden. 

Meine Abfrage liefert mir 160 Datensätze:

SELECT Artikelbezeichnung
FROM Artikel Where Artikelbezeichnung = 'Notebook, Lenovo, 17"' And BNR = 1337

Ich möchte auf 60 von diesen Datensätze meinen Update Befehl anwenden, aber ich weiss nicht wie 

UPDATE Artikel SET WA = 1
Where Artikelbezeichnung = 'Notebook, Lenovo, 17"' And BNR = 1337

Der Top (60) Befehl liefert mir innerhalb der Select Anweisung meine 60 Datensätze, aber der Top Befehl ist in der Update Anweisung scheinbar nicht zulässig: Syntax error...

Hat jemand eine Idee. Danke!


----------



## Alex F. (7. Mai 2010)

```
UPDATE Artikel SET WA = 1
FROM ( SELECT TOP 60 * FROM ARTIKEL
Where Artikelbezeichnung = 'Notebook, Lenovo, 17"' And BNR = 1337)
```
So ungefähr würde es auf nem SQL Server laufen wobei ich das jetzt grad nicht testen kann. Auf Access sollte dies auch gehen 

Gruß
Alex


----------



## Trolleule (7. Mai 2010)

Danke für deine Hilfe, aber leider funktioniert das so nicht, ich bekomme die Meldung:

Syntaxfehler (fehlender Operator) in Abfrageausdruck '1
FROM ( SELECT TOP 60 FROM Artikel
WHERE Artikelbezeichnung = 'Notebook, Lenovo, 17"' AND BNR = 1337)'.

Hast du vielleicht noch eine andere Idee?


----------



## Alex F. (7. Mai 2010)

setz noch einen buchstaben als alias hinter die letzte klammer


----------



## Trolleule (7. Mai 2010)

Geht auch nicht:

UPDATE Artikel SET WA = 1
FROM ( SELECT TOP 60 * FROM ARTIKEL
WHERE Artikelbezeichnung = 'Notebook, Lenovo, 17"' AND BNR = 1337) A

und As A auch nicht


----------



## Alex F. (7. Mai 2010)

hast du einen PK ? Wenn ja dann geht es auf jeden fall so : 


```
UPDATE Artikel SET WA = 1
WHERE ID in  ( SELECT TOP 60  ID FROM ARTIKEL
WHERE Artikelbezeichnung = 'Notebook, Lenovo, 17"' AND BNR = 1337)
```


----------

