2014-11-14 4 views
13

Wie kann ich nur einen Datensatz in db aktualisieren?SQL Server wie wird nur eine Zeile in der Datenbank aktualisiert?

Tabelle:

name  name1  name2 
---------------------------- 
xx   xy   xz 
xx   xx   xx 
xx   xx   xx 
xx   xx   xx 
xy   xx   zz 

Update-Abfrage:

UPDATE table1 
SET name2 = '01' 
WHERE name1='xx' 

aber ich brauche

+0

Verweisen Sie einfach auf den Primärschlüssel für die Tabelle in Ihrer 'WHERE' -Klausel - die eine Sache ** ** eindeutig ** verweist und identifiziert ** jede Zeile ** in Ihrer Tabelle .... –

+0

In Ihrem Fall nicht möglich. – Rahul

+0

Warum fügen Sie keinen Primärschlüssel in Ihre Tabelle ein? – Mukund

Antwort

33

können Sie ROWCOUNT verwenden

SET ROWCOUNT 1 

UPDATE table1 
SET name2 = '01' 
WHERE name1='xx' 

SET ROWCOUNT 0 

oder können Sie Update oben

UPDATE TOP (1) table1 
SET name2 = '01' 
WHERE name1='xx' 
+1

Könnten Sie eine Notiz hinzufügen, warum 'TOP (1) 'nicht als' TOP 1 'geschrieben wird? :) – Zero3

+0

Klammern sind nur in SELECT-Anweisungen optional. Grund dafür ist die Rückwärtskompatibilität. –

+0

@s_f Nicht sicher, ob das von SSMS 2016 stimmt, lass es mich nicht tun – sparkyShorts

-4

nur eine Zeile pro Zeit zu aktualisieren, wenn Sie pro Zeit eine Zeile aktualisieren möchten, bitte versuchen Sie es ein hinzufügen Identity-Spalte zu Ihrer Tabelle, um jede Zeile zu identifizieren.

+0

etwas nach Namen sortiert? – Klapsius

+0

Ich glaube nicht, dass diese Reihenfolge Ihnen helfen wird, denn es gibt mehr als Zeile, die die Bedingung erfüllen. – Dotnetter

-4

Sie können LIMIT 1 am Ende der Abfrage nur hinzufügen, verwenden.

+0

'Falsche Syntax in der Nähe von 'LIMIT'. – Zero3

+0

Sql-Server unterstützt LIMIT nicht – Luca

Verwandte Themen