Heim > Datenbank > MySQL-Tutorial > Wie kann ich Daten basierend auf zwei Bedingungen in SQL effizient einfügen oder aktualisieren?

Wie kann ich Daten basierend auf zwei Bedingungen in SQL effizient einfügen oder aktualisieren?

Barbara Streisand
Freigeben: 2025-01-04 12:06:35
Original
618 Leute haben es durchsucht

How Can I Efficiently Insert or Update Data Based on Two Conditions in SQL?

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
Nach dem Login kopieren

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)
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage