Ich möchte die obersten 400 Zeilen in einer Datenbanktabelle aktualisieren. Die Pseudo-SQL ist unten, wie kann ich dies tun?
UPDATE top (400) db.dbo.tbl
SET column1 = 2
WHERE column2 = 1
AND column1 is null
Ich möchte die obersten 400 Zeilen in einer Datenbanktabelle aktualisieren. Die Pseudo-SQL ist unten, wie kann ich dies tun?
UPDATE top (400) db.dbo.tbl
SET column1 = 2
WHERE column2 = 1
AND column1 is null
UPDATE db.dbo.tbl SET column1 = 2 WHERE
primaryID IN (
SELECT TOP (400) primarkyID FROM db.dbo.tbl
WHERE column2 = 1 AND column1 IS NULL
)
Aber ich mag das nicht, da es keine Möglichkeit gibt, zu garantieren, WELCHE der oberen 400, sollten Sie vielleicht eine andere Art von Kriterien hinzufügen. Und sogar ein Order By zur Unterabfrage.
Wahrscheinlich suchen Sie so etwas wie das hier:
update db.dbo.tbl set column1 = 2
where ID in (
select top 400 ID from db.dbo.tbl
where column2 = 1 and column1 is null --the criteria have been moved here
order by ID --order by clause recommended
)
wobei ID die Primärschlüsselspalte der Tabelle ist.
Wenn Sie SQL Server 2008 verwenden, funktioniert die Syntax "top n" bei Lösch- und Aktualisierungsanweisungen. Andernfalls funktionieren die anderen hier aufgeführten Methoden, bei denen Sie die Primärschlüssel in einer Unterabfrage oder abgeleiteten Tabelle identifizieren, gut. Und wie bereits von anderen erwähnt, ist die "order by"-Syntax sehr empfehlenswert, da sich die aktualisierten Zeilen von einer Abfrage zur nächsten unterscheiden können.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.