Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine MySQL-Zeile basierend auf zwei Bedingungen effizient EINFÜGEN oder AKTUALISIEREN?

Wie kann ich eine MySQL-Zeile basierend auf zwei Bedingungen effizient EINFÜGEN oder AKTUALISIEREN?

Mary-Kate Olsen
Freigeben: 2025-01-04 16:43:41
Original
629 Leute haben es durchsucht

How Can I Efficiently INSERT or UPDATE a MySQL Row Based on Two Conditions?

INSERT INTO oder UPDATE mit zwei Bedingungen

Problembeschreibung:

Der Benutzer stößt auf a zeitraubende Herausforderung: Einfügen einer neuen Zeile in eine Tabelle, wenn nicht bereits eine Zeile vorhanden ist, die zwei bestimmte Bedingungen erfüllt ('Name' und 'Datumsangaben') oder Aktualisieren der vorhandenen Zeile, wenn eine Übereinstimmung gefunden wird.

Lösung:

Die Antwort liegt in MySQLs INSERT INTO ... ON DUPLICATE KEY UPDATE Syntax. Diese leistungsstarke Funktion ermöglicht eine effiziente Datenbearbeitung durch das Einfügen einer neuen Zeile, wenn keine passende Zeile vorhanden ist, oder durch das Aktualisieren der vorhandenen Zeile, wenn eine eindeutige Schlüsselbeschränkung verletzt wird.

Um das gewünschte Verhalten zu erreichen, muss die Tabelle über einen eindeutigen Schlüssel verfügen definiert (in diesem Fall ein zusammengesetzter Schlüssel) für die beiden Spalten („Name“ und „Datum“). Dieser Schlüssel dient als Bezeichner für eindeutige Zeilen in der Tabelle.

Beispielszenario:

Betrachten Sie die folgende Tabellenstruktur:

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

Einfügen Eine neue Zeile mit der folgenden Anweisung erstellt entweder eine neue Zeile oder aktualisiert eine vorhandene, abhängig von der Existenz einer Zeile mit demselben „Namen“ und 'dates':

insert myThing(name,values1,values2,dates) values (777,1,1,'2015-07-11') on duplicate key update values2=values2+1;
Nach dem Login kopieren

Beispielergebnis:

select * from myThing;
+----+------+---------+---------+------------+
| id | name | values1 | values2 | dates      |
+----+------+---------+---------+------------+
| 1 | 777 | 1 | 4 | 2015-07-11 |
| 2 | 778 | 1 | 1 | 2015-07-11 |
+----+------+---------+---------+------------+
Nach dem Login kopieren

Wie das Beispiel zeigt, verarbeitet die Syntax INSERT INTO ... ON DUPLICATE KEY UPDATE beides effizient Einfüge- und Aktualisierungsvorgänge basierend auf dem definierten eindeutigen Schlüssel, wodurch komplexe gespeicherte Prozeduren überflüssig werden.

Das obige ist der detaillierte Inhalt vonWie kann ich eine MySQL-Zeile basierend auf zwei Bedingungen effizient EINFÜGEN oder AKTUALISIEREN?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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