Einfügen oder Aktualisieren mit zwei Bedingungen
Dieses Problem scheint unkompliziert zu sein; Es ist jedoch erforderlich, eine effiziente zeitliche Lösung zu finden. Stellen Sie sich eine Tabelle mit dem folgenden Schema vor:
ID INTEGER PRIMARY KEY AUTOINCREMENT name INTEGER values1 INTEGER values2 INTEGER dates DATE
Jeden Tag werden Daten zu dieser Tabelle hinzugefügt, was zu neuen Zeilen mit zukünftigen Daten führt. Die Daten in der Spalte „Name“ stammen aus einer endlichen Menge. Das gewünschte Verhalten besteht darin, eine neue Zeile einzufügen, wenn neue Daten verfügbar sind, und die vorhandene Zeile zu aktualisieren, wenn bereits eine Zeile mit übereinstimmendem „Namen“ und „Daten“ vorhanden ist.
Lösung:
Die geeignete Methode für diese Situation ist die Anweisung „INSERT INTO ... ON DUPLICATE KEY UPDATE“. Mit dieser Anweisung können Sie sowohl neue Zeilen einfügen als auch vorhandene Zeilen aktualisieren, die bestimmte Bedingungen erfüllen. In Ihrem Fall stimmen die Bedingungen mit „Name“ und „Datum“ überein.
Um diese Methode verwenden zu können, muss Ihre Tabelle über einen eindeutigen Schlüssel (der ein zusammengesetzter Schlüssel sein kann) verfügen, um die Kollision beim Einfügen zu erkennen. Dieser eindeutige Schlüssel kann der Primärschlüssel oder ein zusammengesetzter Schlüssel wie dieser sein:
UNIQUE KEY(name, dates)
Wenn bereits eine Zeile mit demselben „Namen“ und „Datum“ vorhanden ist, wird der Einfügevorgang als Konflikt erkannt und Die in der Klausel „ON DUPLICATE KEY UPDATE“ angegebene Aktualisierungsaktion wird ausgeführt.
Abgeschlossen Beispiel:
CREATE TABLE myThing ( id INT AUTO_INCREMENT PRIMARY KEY, name INT NOT NULL, values1 INT NOT NULL, values2 INT NOT NULL, dates DATE NOT NULL, UNIQUE KEY(name, dates) -- This line is crucial ); -- Insert a new row or update if a row with the same 'name' and 'date' exists INSERT INTO myThing(name, values1, values2, dates) VALUES (777, 1, 1, '2015-07-11') ON DUPLICATE KEY UPDATE values2=values2+1;
Durch die Verwendung der Anweisung „INSERT INTO ... ON DUPLICATE KEY UPDATE“ können Sie basierend auf der Eindeutigkeit des angegebenen Schlüssels effizient neue Zeilen einfügen oder vorhandene Zeilen aktualisieren.
Das obige ist der detaillierte Inhalt vonWie kann ich Daten basierend auf zwei Bedingungen in SQL effizient einfügen oder aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!