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
<br />Vorwort: Bevor Sie dieses Tutorial les...
Finden Sie das Problem Als ich heute versuchte, d...
Inhaltsverzeichnis 1. Lokalen Speicher erstellen ...
Inhaltsverzeichnis 【Allgemeine Befehle】 [Zusammen...
Ändern Sie die vereinfachte Dateigröße und laden ...
In diesem Artikelbeispiel wird der spezifische JS...
Inhaltsverzeichnis Installieren Sie zuerst wget H...
Code kopieren Der Code lautet wie folgt: <!DOC...
Ehrlich gesagt erfordert diese Frage eine Menge g...
1. Flex-Grow-, Flex-Shrink- und Flex-Basis-Eigens...
In diesem Artikel erfahren Sie, wie Sie ziehbare ...
Die in diesem Beispiel verwendete MySQL-Version i...
CSS-Layout – Positionseigenschaft Das Positionsat...
Vorwort Die Sprachklassifikation von SQL umfasst ...
Inhaltsverzeichnis 1. Komponente 2. Keep-Alive-Mo...