Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gibt es einen Trick, um MySQL zu erlauben, ein nachgestelltes Komma in der SET-Klausel einer UPDATE-Anweisung zu ignorieren?

Sofern Sie nicht bereit sind, einen Wert zu duplizieren, wie Igoel vorschlägt (was möglicherweise nicht ideal ist, wenn der Wert lang ist), lautet die einfache Antwort nein .

Eine kurz ermutigende Möglichkeit war die Verwendung von dem Alias ​​NEW um die eingehenden Werte darzustellen, sodass der endgültige Wert dupliziert werden kann, ohne ihn tatsächlich erneut in der Abfrage präsentieren zu müssen (und ich hoffe, dass dies vom Abfrageoptimierer herausgenommen wird):

UPDATE `myTable` SET 
   `Field1` = "value",
   `Field2` = "value",
   `Field3` = "value",
--- `Field3` = NEW.`Field3`
WHERE `Field4` = "value";

Leider wird dies in einem UPDATE nicht unterstützt -Anweisung, nur innerhalb eines Auslöserkörpers.

Sie müssen die Manipulation in Ihrem C++ vornehmen, bevor Sie die Anweisung ausführen, entweder durch Zeichenersetzung (, für ) oder Zeichenentfernung; Ersteres erzeugt möglicherweise komplexeren Code als Sie jetzt haben, und Letzteres kann ineffizient sein (abhängig von der Struktur Ihres Abfrageerstellungscodes), aber es ist immer noch Ihre beste Wahl.