5.4. Wie kann ich Werte vertauschen (aus 8 mach 5 und umgekehrt)?

Antwort von Christian Hamacher

Wenn zwischen 2 Werten umgeschaltet werden soll, so addiert man beide Werte, das Ergebnis ist der Minuend der eigentlichen Rechnung.

Summe1+2 - Spalte = NeuerWert

zB: Es soll von 5 nach 3 geschaltet werden. 5 + 3 = 8 daraus folgt: 8 - 3 = 5 und 8 - 5 = 3

Das Gleiche mit 0 und 1: 0 + 1 = 1 ==> 1 - 0 = 1 und 1 - 1 = 0

Es geht auch mit solchen Kombinationen: -7 und 25: (-7) + 25 = 18 ==> 18 - (-7) = 25 und 18 - 25 = (-7).

Wenn man das Ganze in MySQL machen will und in der entsprechenden Spalte gibt es noch Werte die nicht einem der beiden Schalter entsprechen, so muß man dafür sorgen, dass diese nicht geändert werden. Das kann man mit "IN (x,y)" erreichen.

mysql> select * from test order by id;
+----+------+
| id | wert |
+----+------+
|  1 |    3 |
|  2 |    1 |
|  3 |    0 |
|  4 |    3 |
|  5 |    5 |
+----+------+

mysql> update test set wert = (8 - wert) where wert in (3,5);
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3  Changed: 3  Warnings: 0

mysql> select * from test order by id;
+----+------+
| id | wert |
+----+------+
|  1 |    5 |
|  2 |    1 |
|  3 |    0 |
|  4 |    5 |
|  5 |    3 |
+----+------+