Heute werde ich Ihnen einen Unterschied zwischen der UPDATE-Anweisung in der MySQL-Datenbank und dem SQL-Standard (und anderen Datenbanken) vorstellen. Wenn wir diesem Problem keine Aufmerksamkeit schenken, kann es zu unerwarteten Ergebnissen führen. Beginnen wir mit der Erstellung einer einfachen Beispieltabelle: TABELLE ERSTELLEN t1( Ich würde int, col1 int, col2 int ); EINFÜGEN IN t1 WERTE (1, 1, 1); WÄHLEN SIE * VON t1; ID|Spalte1|Spalte2| --|----|----| 1| 1| 1| ———————————————— Copyright-Erklärung: Dieser Artikel ist ein Originalartikel des CSDN-Bloggers „Teacher Tony Who Doesn't Cut Hair“ und unterliegt der CC 4.0 BY-SA-Urheberrechtsvereinbarung. Bitte fügen Sie beim Nachdruck den Link zur Originalquelle und diese Erklärung bei. Ursprünglicher Link: https://blog.csdn.net/horses/article/details/110238573CREATE TABLE t1( Ich würde int, col1 int, col2 int ); EINFÜGEN IN t1 WERTE (1, 1, 1); WÄHLEN SIE * VON t1; ID|Spalte1|Spalte2| --|----|----| 1| 1| 1| Dann aktualisieren wir die Daten in Tabelle t1: AKTUALISIERUNG t1 SETZE col1 = col1 + 1, Spalte2 = Spalte1 WO id = 1; Wählen Sie Spalte1, Spalte2 aus. VON t1; Was sind die Ergebnisse der von der Abfrageanweisung zurückgegebenen Felder col1 und col2?
Wenn bei MySQL eine UPDATE-Anweisung eine zuvor aktualisierte Spalte (col1) in einem Ausdruck (col2 = col1) verwendet, wird der aktualisierte Wert der Spalte (2) anstelle des ursprünglichen Werts (1) verwendet. Beachten Sie, dass diese Implementierung in MySQL vom SQL-Standard abweicht. Wir haben auch andere Datenbanken getestet, darunter Oracle, Microsoft SQL Server, PostgreSQL und SQLite, deren Implementierungen dem SQL-Standard folgen. Wenn wir in MySQL den gleichen Effekt wie in Standard-SQL erzielen möchten, können wir die Reihenfolge der aktualisierten Felder in der UPDATE-Anweisung anpassen. Zum Beispiel: AKTUALISIERUNG t1 SETZE Spalte2 = Spalte1, col1 = col1 + 1 WO id = 1; Auf diese Weise wird die Spalte col2 vor col1 mit dem alten Wert von col1 (1) aktualisiert und das Ergebnis entspricht dem SQL-Standard. Fazit: Im Allgemeinen müssen wir uns beim Schreiben von UPDATE-Anweisungen keine Gedanken über die Aktualisierungsreihenfolge mehrerer Felder machen. Aufgrund von MySQL-Implementierungsproblemen müssen wir jedoch auf ihre grammatikalische Reihenfolge achten. Dies ist das Ende dieses Artikels über die nicht standardmäßige Implementierung der MySQL UPDATE-Anweisung. Weitere nicht standardmäßige Inhalte zur MySQL UPDATE-Anweisung finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Zusammenfassung mehrerer Methoden zur Implementierung der vertikalen Zentrierung mit CSS
>>: Vue implementiert einen Wasserfallfluss mit unendlichem Laden
Einführung in jsvc In der Produktion sollte Tomca...
Inhaltsverzeichnis 1. Titel 2. Code 3. Ergebnisse...
1) Prozess 2) FSImage und Bearbeitungen Nodenode ...
Die Rolle der Schnittstelle: Schnittstelle, auf E...
<br />Denken Sie zuerst an die Idee, zeichne...
Wenn Browser-Anbieter die Standards umgehen und ei...
Die Tabellenpartitionierung unterscheidet sich vo...
Vorwort Es besteht ein Missverständnis bezüglich ...
Definition und Verwendung: Verwenden Sie die Slot...
Inhaltsverzeichnis Vorwort Berechnete Eigenschaft...
Dieser Artikel beschreibt den Upgrade-Prozess von...
Dieser Artikel stellt ein interessantes Pseudoele...
In Vue haben wir im Allgemeinen Front-End- und Ba...
Sehen Sie zuerst den Effekt Implementierungscode ...
Vorwort Bei der Webentwicklung sind häufig domäne...