PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : syntaxfehler in mysql befehl...



jean_luc_picard
09.04.03, 21:20
warum funktioniert folgendes nicht?

USE $db
UPDATE $table SET xy = '123', xz = '454' WHERE xy = '0' AND xz = '0'
ORDER BY 'ID' DESC LIMIT 1;

es soll nur der letzte eintrag in der tabelle aktualisiert werden, und das auch nur, wenn bestimmte werte in den spalten stehen... wie würdet ihr das machen?

blondesGift
09.04.03, 21:43
ich frag mich grad wozu du da den ORDER BY Befehl drin hast ?!

jean_luc_picard
09.04.03, 22:24
ID wird per auto_increment hochgezählt. da ich nur die letzte zeile bearbeiten will, sollte die tabelle absteigend sortiert werden, und nur ein eintrag bearbeitet werden...

Jinto
09.04.03, 22:30
Nochmal: Wieso sollte die Tabelle für ein update sortiert werden? Wirf bitte einen Blick in die SQL-Syntax für den update Befehl.

HTH

PS: Programmierfragen werden auf http://www.mrunix.de behandelt.

blondesGift
09.04.03, 22:35
Original geschrieben von jean_luc_picard
ID wird per auto_increment hochgezählt. da ich nur die letzte zeile bearbeiten will, sollte die tabelle absteigend sortiert werden, und nur ein eintrag bearbeitet werden...

Hmm das ist aber blödsinn.
Sortierfunktionen ergeben nur bei Abfragen einen Sinn, nicht aber beim schreiben oder updaten eines Datenbankeintages.

Bearbeitet wird eh nur das, was laut den Bedingungen von WHERE Zutrifft, dazu ist WHERE schliesslich da ;)

Also schmeiss den Teil ab ORDER BY raus, der ist hier völlig unsinnig.

Liebe Grüsse, dat blonde

jean_luc_picard
10.04.03, 07:35
aber was ist, wenn die where-klausel auf 2 (oder mehr) datensätze zutrifft? das nur einer bearbeitet wird ist ja durch LIMIT 1 sichergestellt, aber wie erreiche ich, das er garantiert den letzten datensatz aktualisiert, also den mit der höchsten ID?

xstevex22
10.04.03, 08:53
Original geschrieben von jean_luc_picard
warum funktioniert folgendes nicht?

USE $db
UPDATE $table SET xy = '123', xz = '454' WHERE xy = '0' AND xz = '0'
ORDER BY 'ID' DESC LIMIT 1;

es soll nur der letzte eintrag in der tabelle aktualisiert werden, und das auch nur, wenn bestimmte werte in den spalten stehen... wie würdet ihr das machen?

USE $db
UPDATE $table SET xy = '123', xz = '454' WHERE xy = '0' AND xz = '0' AND id = (SELECT id FROM $table ORDER BY id DESC LIMIT 1);

jean_luc_picard
10.04.03, 09:35
funktioniert leider nich so :(
ich bekomme immer ne synty fehler meldung bei

(SELECT id FROM $table ORDER BY id DESC LIMIT 1)

obwohl der befehl einzeln ausgeführt funktioniert... hmm...

Jinto
10.04.03, 14:43
Die Fehlermeldung lautet?
Aber überleg mal, die vergleichst ein Feld mit einer Menge an Rückgaewerten, was könnte daran wohl falsch sein?

piet
10.04.03, 16:38
Original geschrieben von xstevex22
USE $db
UPDATE $table SET xy = '123', xz = '454' WHERE xy = '0' AND xz = '0' AND id = (SELECT id FROM $table ORDER BY id DESC LIMIT 1);

MySQL unterstützt doch gar keine verschachtelten Abfragen, oder irre ich mich da ?

xstevex22
10.04.03, 17:00
Hi!
Doch, tut es...

Jinto
10.04.03, 20:22
@xsteve22
IIRC werden Subselects erst ab Version 4.x unterstützt