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
Das Projekt wurde vor Kurzem ausgesetzt und die U...
Inhaltsverzeichnis Nachdem Sie einen Container lo...
In diesem Artikelbeispiel wird der spezifische Co...
<br />Tabelle ist ein umständliches Tag in X...
Tabellenstruktur und deren Daten kopieren Die fol...
Aus Hardwaregründen kann es vorkommen, dass die M...
Installationsumgebung: CentOS7 64-Bit-Mini-Versio...
Wie unten dargestellt: Wählen Sie Produktname, Pr...
MySQL unterstützt viele Arten von Tabellen (d. h....
VUE verwendet vue-seamless-scroll zum automatisch...
Tatsächlich ist dieses Problem bereits aufgetreten...
1. MHA Durch die Überwachung des Masterknotens ka...
Mysql konvertiert Abfrageergebnissatz in JSON-Dat...
Standardmäßig erfolgt das Lesen und Schreiben von...
Die Umgebung dieses Artikels ist Windows 10 und d...