Ich habe gerade festgestellt, dass ich die falschen Daten für eine Spalte in meiner Tabelle erfasst habe. Ich habe das Problem behoben, aber die Daten, die ich bisher erfasst habe, bleiben falsch.Wie man Spalten Daten mit anderen Tabellen Daten aktualisieren TSQL
Lassen Sie uns den Namen meiner Tabellen TableIWantToCorrect
und TableWithIDs
In TableIWantToCorrect
, ich habe einen Fremdschlüssel zu TableWithIDs
. Das ist was falsch ist.
Ich bin in der Lage, die Daten zu korrigieren, indem Teilstring einer Spalte in TableIWantToCorrect
mit einer Spalte in TableWithIDs
verglichen wird.
Also zur Zeit, ich habe
TableIWantToCorrect
Name ForeignKey
123-abc-123 15
456-def-456 15
789-ghi-789 15
TableWithIDs
CompareName id
abc 1
def 2
ghi 3
Deshalb mag ich TableIWantToCorrect
aktualisieren, um den richtigen ForeignKey Wert zu haben, wenn der Teil in der Name entspricht der Teilzeichenfolge im Vergleich Name. Die Position des Teilstrings ist immer gleich, so dass ich die Methode Substring
verwenden kann.
Mein Versuch:
Update TableIWantToCorrect
SET ForeignKey =
(SELECT id
FROM TableWithIDs
WHERE UPPER(CompareName) = UPPER((SUBSTRING(TableIWantToCorrect.Name, 4, 3)))
Das Ergebnis:
Unterabfrage gab mehr als 1 Wert. Dies ist nicht erlaubt, wenn die Unterabfrage folgt =,! =, <, < =,>,> = oder wenn die Unterabfrage als ein Ausdruck verwendet wird. Die Anweisung wurde beendet.
Ich weiß, ich habe etwas Dummes getan. Was habe ich hier falsch gemacht?
Ihre Inline-Abfrage ist mehr als eine Zeile zurückgibt daher das Problem. Führen Sie diese Abfrage, um herauszufinden, welche davon wiederholen SELECT CompareName, COUNT (1) \t VON TableWithIDs GROUP BY CompareName MIT COUNT (1)> 1 \t ' – Chandu
Haben Sie noch den Fehler erhalten, wenn Sie die Unterabfrage zu ändern benutze 'SELECT DISTINCT id'? Wenn dies der Fall ist, gibt es mehrere mögliche Übereinstimmungen und es ist mehrdeutig, welche zu verwenden ist. –
mögliches Duplikat von [UPDATE von SELECT mit SQL Server] (http://stackoverflow.com/questions/2334712/update-from-select-using-sql-server) –