2016-12-20 2 views

Antwort

1

Ich denke, Sie können es tun. Wenn Sie dies tun:

Ich glaube, dass die Updates von links nach rechts ausgeführt werden. Wenn es also zu C = A + B kommt, enthalten A und B die neuen Werte.

+0

Oh, scheint zu arbeiten. Praktisch und logisch, danke! – zojwek

+0

'C = WERTE (A) + WERTE (B)' wäre etwas deterministischer, da die ['VALUES()' -Funktion] (http://dev.mysql.com/doc/refman/5.7/en/ diverse-functions.html # function_values) liefert garantiert die neuen Werte, während das links-nach-rechts-Verhalten eher ein (un) glücklicher Zufall ist. In Standard-SQL transponiert 'UPDATE t1 SET b = a, a = b' die Werte von a und b, aber in MySQL setzt er sie beide auf a, weil es den Wert von "alt a", aber "neu b" annimmt die rechte Seite des Zuweisungsoperators. Ordnen Sie die Abfrage und den Code neu an. –

+0

@ Michael-sqlbot Die 'VALUES()' Funktion nimmt die Werte auf, die in die Spalten eingefügt worden wären, wenn es kein Duplikat gegeben hätte, sie erhält nicht die neuen Werte von der 'UPDATE'-Klausel. – Barmar

Verwandte Themen