UPDATE AggregatedData SET datenum="734152.979166667",
Timestamp="2010-01-14 23:30:00.000" WHERE datenum="734152.979166667";
Es funktioniert, wenn das datenum
existiert, aber ich möchte diese Daten als neue Zeile einfügen, wenn das datenum
nicht existiert.
AKTUALISIEREN
Das Datum ist eindeutig, aber das ist nicht der Primärschlüssel
Antworten:
Jai ist richtig, dass Sie verwenden sollten
INSERT ... ON DUPLICATE KEY UPDATE
.Beachten Sie, dass Sie kein Datum in die Aktualisierungsklausel aufnehmen müssen, da es sich um den eindeutigen Schlüssel handelt, sodass er sich nicht ändern sollte. Sie müssen alle anderen Spalten aus Ihrer Tabelle einfügen. Mit dieser
VALUES()
Funktion können Sie sicherstellen, dass beim Aktualisieren der anderen Spalten die richtigen Werte verwendet werden.Hier ist Ihr Update, das mit der richtigen
INSERT ... ON DUPLICATE KEY UPDATE
Syntax für MySQL neu geschrieben wurde :quelle
UNIQUE
Einschränkungen für dieTimestamp
Verwendung vonALTER TABLE AggregatedData ADD UNIQUE (Timestamp)
Versuchen Sie es mit dieser :
quelle
Ich hatte eine Situation, in der ich eine Tabelle gemäß zwei Feldern (beide Fremdschlüssel) aktualisieren oder einfügen musste, für die ich keine EINZIGARTIGE Einschränkung festlegen konnte (daher funktioniert INSERT ... ON DUPLICATE KEY UPDATE nicht). Folgendes habe ich letztendlich verwendet:
Dieses Beispiel stammt aus einer meiner Datenbanken, wobei die Eingabeparameter (zwei Namen und eine Nummer) durch [hasher_name], [hash_name] und [new_value] ersetzt wurden. Das verschachtelte SELECT ... LIMIT 1 ruft den ersten des vorhandenen Datensatzes oder einen neuen Datensatz ab (last_recogs.id ist ein Primärschlüssel für die automatische Inkrementierung) und verwendet diesen als Werteingabe in REPLACE INTO.
quelle