Ich habe eine Tabelle mit Spalten record_id
(auto inc), sender
, sent_time
und status
.Wie fügt man einen Datensatz oder UPDATE ein, wenn er bereits existiert?
Wenn es keinen Datensatz eines bestimmten Absenders gibt, zum Beispiel "sender1", muss ich einen neuen Datensatz einfügen, ansonsten muss ich den vorhandenen Datensatz aktualisieren, der zu "user1" gehört.
Also, wenn es keine Datensatz bereits gespeichert ist, würde ich ausführen
# record_id is AUTO_INCREMENT field
INSERT INTO messages (sender, sent_time, status)
VALUES (@sender, time, @status)
Sonst würde ich UPDATE-Anweisung ausführen.
Wie auch immer .. weiß jemand diese beiden Aussagen zu kombinieren, um einen neuen Datensatz einzufügen, wenn es keinen Datensatz gibt, bei dem der Feldabsenderwert "user1" ist, ansonsten den vorhandenen Datensatz aktualisieren?
Die Syntax ist noch leistungsfähiger als das: „ON DUPLICATE KEY UPDATE col1 = VALUES (col1) ist ein eleganter Weg, um tue, was du beschreibst (und es funktioniert bei mehrzeiligen Einfügungen.) Du kannst auch den Wert von col1 verwenden, wie bei ON DUPLICATE KEY UPDATE col1 = col1 + 1. – ojrac
Warum machst du col1 = col1 + 1. Was macht das? bedeuten? –
über diesen Thread gestolpert ... col1 = col1 1 ist ein Beispiel, wo Sie vielleicht einen Zähler in der Tabelle haben, anstatt mit SELECT, um den Wert zu erhalten, und fügen Sie 1, wird der aktuelle Wert in der Tabelle verweisen, und führen Sie eine Berechnung durch, die die SELECT-Anweisung überflüssig macht – tutts