Hello,
Wenn Du unbedingt beim Kreis bleiben willst, musst du aber nicht zweimal dieselbe Berechnung durchführen innerhalb eines Statements. Dafür kannst Du bei ersten Mal eine benutzerdefinierte Variable belegen und auf diese beim zweiten Mal zugreifen.
Siehe http://dev.mysql.com/doc/refman/5.6/en/user-variables.html ab "As a general rule, other than in SET statements, you should never assign a value to a user variable and read the value within the same statement." und die folgenden Ausführungen. Besonders kritisch ist dabei, der lesende und schreibende Zugriff während der Bearbeitung eines Datensatzes. Es ist nicht garantiert, dass die Variable erst für die eine Berechnung gesetzt wird und dann für die andere gelesen wird. Es kann auch gut sein, dass sie erst gelesen wird, dabei den Wert des vorhergehenden Datensatzes enthält und die Zuweisung danach erfolgt. Die Reihenfolge der Klauseln gibt nicht zwangsweise die Ausführungsreihenfolge an.
Tja, MySQL ist schon Mist.
Dann kann er immer noch eine Stored Routine daraus machen. Da ist das dann mMn aber erlaubt, in einem Statement erst die Berechnungen durchzuführen und im im zweiten darauf zuzugreifen.
Allerdings weiß ich jetzt nicht, wie groß die Ergebnismenge werden darf bei MySQL Stored Routines...
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg