[MySQL:] Problem mit UPDATE table

maceis

maceis

Aktives Mitglied
Thread Starter
Dabei seit
24.09.2003
Beiträge
16.880
Reaktionspunkte
626
Hallo zusammen,

ich stehe gerade etwas auf der Leitung.
Ich möchte in einer Tabelle ein Feld ändern in allen Datensätzen, in der der Wert dieses Feldes größer als 0 ist.

Code:
SELECT feld*-1 FROM tabelle WHERE feld > 0;
ruft alle diese Felder auf und multipliziert den Wert mit -1.

Code:
UPDATE tabelle SET feld = (SELECT feld*-1 FROM tabelle) WHERE feld > 0;
führt aber zum Fehler
Code:
ERROR 1093 (HY000): Die Verwendung der zu aktualisierenden Zieltabelle 'tabelle' ist in der FROM-Klausel nicht zulässig.

Wo liegt mein Denkfehler? Wie muss das Kommando richtig heißen?

Danke im Voraus und Gruß
maceis
 
Also so wie ich die Fehlermeldung verstehe, kannst du nicht ein UPDATE und ein SELECT im selben Befehl auf die selbe Tabelle machen. Wobei.... eigentlich sollte das schon gehen. Oder auch nicht? Bin gerade überfragt :)
 
Das spiegelt genau meine Situation wieder ;).
 
Moin!

Du möchtest das hier machen, oder?

Code:
mysql> insert into ts values (-1);
Query OK, 1 row affected (0,00 sec)

mysql> select * from ts;
+------+
| feld |
+------+
|    1 | 
|    2 | 
|    0 | 
|   -1 | 
+------+
4 rows in set (0,00 sec)

mysql> update ts set feld = feld * -1 where feld > 0;
Query OK, 2 rows affected (0,00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> select * from ts;
+------+
| feld |
+------+
|   -1 | 
|   -2 | 
|    0 | 
|   -1 | 
+------+
4 rows in set (0,00 sec)

Viele Grüße
Christian
 
Ich weiss nicht welche SQL-Datenbank du verwendest und hab leider im Moment auch keine hier zum Testen.
Ich denke aber, dass die SELECT-Anweisung hier nicht nötig ist und

UPDATE tabelle SET feld = feld*-1 WHERE feld > 0;

zum gewünschten Ergebnis führen sollte.

EDIT: zu langsam :)
 
Aargh!
So einfach ist das? Wieder mal zu kompliziert gedacht.
Vielen Dank (Edit: an Euch beide)

Gruß
maceis
 
Zurück
Oben Unten