2010-12-18 11 views
0

Wenn ich eine Tabelle MyTable mit Spalten a, b und c habe, die ints sind. Vorausgesetzt, dass ich alle 'a's basierend auf den Werten von b und c aktualisieren möchte.Aktualisieren einer Tabelle in Tsql mit mehreren Bedingungen

Update MyTable set a = 2 where b = 1 and c = 1 

Es ist viel zu spät, und ich kann nicht für das Leben von mir sehen, warum diese Aussage nicht funktioniert, bin ich etwas fehlt dumm?

Bearbeiten, woops, vergaß den Fehler.

"Unterabfrage gab mehr als 1 Wert zurück. Dies ist nicht zulässig, wenn die Unterabfrage =,! =, <, < =,>,> = oder wenn die Unterabfrage als Ausdruck verwendet wird."

Edit2: Das war die genaue Abfrage, die ich verwendete (verschiedene Spaltennamen). Es stellte sich heraus, dass ein Auslöser auf dem Tisch war, der gebrochen war. Ich fühle mich jetzt ein wenig albern, aber danke für die Hilfe trotzdem :)

+0

Können Sie beschreiben, warum es nicht funktioniert? Fehler, nichts aktualisiert usw. – sgriffinusa

+0

Das sollte funktionieren. Ich kann nicht sehen, warum es nicht –

+2

Ihr Fehler nicht mit Ihrem Code übereinstimmt. Wenn möglich, sollten Sie die genaue SQL-Abfrage veröffentlichen. – sgriffinusa

Antwort

3

Es ist nichts falsch mit der Aussage, die Sie gepostet haben. Der Fehler ist woanders.

Konnten Sie die falsche Frage gepostet haben? Oder hast du es vielleicht zu stark vereinfacht? Eine Unterabfrage sieht ungefähr wie folgt aus:

UPDATE MyTable 
SET a = 2 
WHERE b = 1 AND c = (SELECT c FROM MyTable2 WHERE id = 5) 
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <--- subquery 

eine ungültige Abfrage, die die Fehlermeldung geben könnten Sie so aussehen bekommen konnte:

UPDATE MyTable 
SET a = 2 
WHERE b = 1 AND c = (SELECT c, d FROM MyTable2 WHERE id = 5) 

Die zweite Abfrage ist ungültig, da es zwei Werte zurückgibt, sondern die = Der Operator erlaubt nur den Vergleich mit einem einzelnen Wert.

Die Lösung besteht darin, sicherzustellen, dass alle in Gleichheitsvergleichen verwendeten Unterabfragen nur eine einzelne Zeile zurückgeben, die aus einer einzigen Spalte besteht.

Verwandte Themen