Derzeit gibt es in meinem Datensatz ein bestimmtes Feld, in dem einige Datensätze keine Werte haben. Das Feld darf im Schema NULL sein.
Manchmal werden diese Daten jedoch basierend auf der ID in anderen Datensätzen in der Datenbank aufgefüllt.
Ich möchte eine Abfrage ausführen, um diese NULL zu aktualisierenFelder mit den entsprechenden Werten basierend auf dem Inhalt der restlichen Datenbank. Nehmen Sie an, dass es für diese Felder niemals widersprüchliche Werte geben wird.
Beispielsweise:
ID Identifier Address Name OrderID
123 23 Sheppard Court David 465464322
456 100100100100 29 Milestone Cres Terry 651654986
789 200200200200 102 Dynamo Drive Joseph 397431357
123 300300300300 23 Sheppard Court David 516198532
Die Datensätze im obigen Beispiel sind eindeutig, aber das Feld Identifier wird für die erste Zeile nicht ausgefüllt.
Ich möchte eine Abfrage ausführen, die es mir ermöglicht, dieses fehlende Feld schnell mit dem richtigen Wert zu aktualisieren, d. H. 300300300300 in diesem Fall.
Antworten:
1 für die Antwort № 1Nehmen Sie an, dass es für diese Felder niemals widersprüchliche Werte geben wird.
Wenn dies eine gültige Annahme ist, ist dies bei weitem die einfachste Lösung.
UPDATE tableName a
SET identifier = (
SELECT distinct identifier
FROM tableName b
WHERE a.id = b.id
AND identifier IS NOT NULL)
WHERE identifier IS NULL
Mit kann man schicker werden MERGE INTO
Syntax, aber ich bin nicht sicher, ob das im Zugriff verfügbar ist.
0 für die Antwort № 2
Aktualisiert alle Ihre fehlenden IDs.
UPDATE yourTable t1
SET t1.Identifier =
(SELECT TOP 1 Identifier FROM yourTable
WHERE t1.Identifier IS NOT NULL)
WHERE t1.Identifier IS NULL
Randnotiz: Wie ist es möglich, dass Sie solche unordentlichen Daten haben? Normalerweise solltest du noch nie müssen solche Updates in Ihrer Datenbank starten.
Haben Sie auch einen Primärschlüssel in Ihrer Tabelle? Weil ich keinen sehen kann und es ist wirklich ein Muss auf fast jedem tisch.