[MySQL:] Problem mit UPDATE table

maceis

Aktives Mitglied
Thread Starter
Registriert
24.09.2003
Beiträge
16.879
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
 

balufreak

Aktives Mitglied
Registriert
12.10.2003
Beiträge
1.565
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 :)
 

maceis

Aktives Mitglied
Thread Starter
Registriert
24.09.2003
Beiträge
16.879
Das spiegelt genau meine Situation wieder ;).
 

cmittendorf

Mitglied
Registriert
26.07.2003
Beiträge
356
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
 

UPeuker

Mitglied
Registriert
21.10.2008
Beiträge
496
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 :)
 

maceis

Aktives Mitglied
Thread Starter
Registriert
24.09.2003
Beiträge
16.879
Aargh!
So einfach ist das? Wieder mal zu kompliziert gedacht.
Vielen Dank (Edit: an Euch beide)

Gruß
maceis
 
Oben