MYSQL: Zahl abwechseln
AllesMeins
- datenbank
0 Reiner0 AllesMeins0 Axel Richter0 MudGuard
Hiho,
ich möchte in ein Datenbankfeld per UPDATE eine Zahl einfügen, die abhängig von dem vorherigen Inhalt ist. Wenn eine 1 drinne steht soll dies mit 2 überschrieben werden, wenn eine 2 drinne steht mit 1. Nun könnte ich natürlich erst das entsprechende Feld auslesen, dann in PHP ne if Abfrage machen und dann den entsprechenden wert wieder zurückschreiben. Aber das lässt sich doch sicherlich vermeiden.
Deshalb meine Frage: Gibt es in mysql sowas wie ne IF Konstruktion (die Suche in den mysql docs nach IF bringt verständlicherweise nichts wirklich hilfreiches) oder fällt euch alternativ ne mathematische Funktion die mysql kann ein, die 1 auf 2 bzw. 2 auf 1 bringt?
Ich hoffe ihr könnt mir helfen, das ganze in einem Query zu erledigen.
Grüsse
Marc
Hi,
update tabelle set wert='1' where wert='0';
update tabelle set wert='0' where wert='1';
Gruß
Reiner
Hiho,
danke für die schnell Antwort. Das wird sicherlich funktionieren, allerdings brauche ich da ja auch wieder zwei Querys. Ich versuche ja gerade das Ding möglichst zu komprimieren.
Grüsse
Marc
Hallo!
danke für die schnell Antwort. Das wird sicherlich funktionieren, allerdings brauche ich da ja auch wieder zwei Querys. Ich versuche ja gerade das Ding möglichst zu komprimieren.
Wenn Dir MySQL4 zur Verfügung steht, kannst Du mit Subselects arbeiten.
MfG, André Laugks
Hallo,
update tabelle set wert='1' where wert='0';
Hiernach sind in allen Datensätzen die Felder wert = 1, welche vorher gleich 0 waren. Die Datensätze, in denen Die Felder wert bereits gleich 1 waren, blieben unverändert.
update tabelle set wert='0' where wert='1';
Hiernach sind in allen Datensätzen die Felder wert = 0, welche vorher gleich 1 waren, auch die welche Du im vorherigen Satement erst auf 1 gesetzt hast und die, welche das vorherige Statement nicht betraf.
Nach beiden Statements sind also alle Felder wert = 0, welche vorher entweder 0 oder 1 waren.
Wenn es wirklich nur um zwei alternierende Werte geht, würde folgendes funktionieren:
MySQL:
UPDATE Tabelle SET wert = If(wert=0,1,0);
viele Grüße
Axel
Hi,
UPDATE Tabelle SET wert = If(wert=0,1,0);
Ich hätte
UPDATE tabelle SET wert = 3 - wert;
benutzt, wobei die 3 daher kommt, daß es die Summe der beiden vom OP vorgegebenen Werte 1 und 2 ist.
Da diese Lösung ohne (if-)Verzweigung ist, gefällt sie _mir_ besser..
cu,
Andreas
Hallo,
UPDATE Tabelle SET wert = If(wert=0,1,0);
Ich hätte
UPDATE tabelle SET wert = 3 - wert;
benutzt, wobei die 3 daher kommt, daß es die Summe der beiden vom OP vorgegebenen Werte 1 und 2 ist.
Da diese Lösung ohne (if-)Verzweigung ist, gefällt sie _mir_ besser..
Ja, geht aber, wie meine auch, nur, wenn es nicht mehr als zwei mögliche Werte gibt. Um andere Werte zu schützen (z.B. würde aus 4 ja -1 werden), wäre noch:
UPDATE tabelle SET wert=3-wert WHERE wert=1 OR wert=2;
sinnvoll.
Tausche Wert x gegen Wert y:
UPDATE tabelle SET wert=(x+y)-wert WHERE wert=x OR wert=y;
Wo konnte man doch gleich diese Softwarepatente einreichen? ;-))
viele Grüße
Axel
Hiho,
UPDATE tabelle SET wert = 3 - wert;
Autsch! Da hätte ich auch selber drauf kommen können. Das kommt davon wenn man zu kompliziert denkt. Danke dafür
Marc