SQL statement fehler?
bibo
- datenbank
hallo,
ich komm einfach nicht auf den fehler in diesem statement drauf!
DELETE FROM Instant WHERE SenderID='22' AND ReceiverID='6' OR SenderID='6' AND ReceiverID='22' ORDER BY 'MessID' ASC LIMIT 0 ,2
kann mir bitte wer helfen?
hi
DELETE FROM Instant WHERE SenderID='22' AND ReceiverID='6' OR SenderID='6' AND ReceiverID='22' ORDER BY 'MessID' ASC LIMIT 0 ,2
da ich die datenfelder deiner tabelle nicht kenne, kann ich nur raten.
afaik werden nur chars in '' gepackt...handlet es sich um zahlen nimmt man keine
wenn du nach einem datenfeld ordnen willst sollte das afaik auch nciht in '' stehen.
so long
ole
(8-)>
sorry, es handelt sich um mysql!
die fehlermeldung lautet:
You have an error in your SQL syntax near 'ORDER BY 'MessID' ASC LIMIT 0 ,
2' at line 1
"wie immer, oder?:-)"
bibo
DELETE FROM Instant WHERE SenderID='22' AND ReceiverID='6' OR SenderID='6' AND ReceiverID='22' ORDER BY 'MessID' ASC LIMIT 0 ,2
Oi,
welche Datenbank? Welche Fehlermeldung? Da Du keine Klammern setzt, besteht Deinerseits Klarheit bezüglich der Rangfolge der logischen Operatoren in der WHERE-Klausel?
HTH Robert
sorry, es handelt sich um mysql!
die fehlermeldung lautet:
You have an error in your SQL syntax near 'ORDER BY 'MessID' ASC LIMIT 0 ,
2' at line 1
"wie immer, oder?:-)"
bibo
Hi Bibo,
You have an error in your SQL syntax near 'ORDER BY 'MessID' ASC LIMIT 0 ,
2' at line 1
was willst Du auch mit order by und limit in einer deleteanweisung?
genau die sind das Problem.
ciao
romy
warum?
ich möchte einfach die anfänglichen 2 nachrichten oder wie auch immer geordnet nach der ID löschen!
was ist da so komisch?
irgendwie muss ich sie ja sortieren und limitieren!
bibo?
Oi,
ich möchte einfach die anfänglichen 2 nachrichten oder wie auch immer geordnet nach der ID löschen!
das "LIMIT 0,2" hatte ich gar nicht gesehen. LIMIT verlangt nach der Anzahl der zu löschenden Zeilen (in der von Dir vorgegebenen Ordnung). Mehr nicht.
HTH Robert
ich bekomm aber den fehler auch wenn ich nur LIMIT 2 sage!
bibo
Oi,
Du hast ja auch noch nicht alle Fehler behoben. Siehe weiter oben...
HTH Robert
latest version:
DELETE FROM Instant WHERE SenderID = '22' AND ReceiverID = '6' OR SenderID = '6' AND ReceiverID = '22' ORDER BY MessID ASC LIMIT 2
aber, selber fehler!!!
bibo
hi
DELETE FROM Instant WHERE SenderID = '22' AND ReceiverID = '6' OR SenderID = '6' AND ReceiverID = '22' ORDER BY MessID ASC LIMIT 2
ich vermute mal deine AND/OR statements sollten folgende syntax haben (damit es sinn macht):
DELETE FROM Instant WHERE (SenderID = '22' AND ReceiverID = '6') OR (SenderID = '6' AND ReceiverID = '22') ORDER BY MessID ASC LIMIT 2
sind SenderID & RecieverID char oder integer?
so long
ole
(8-)>
ich hab den fehler!!!!
es wird erst in dieser form mit mysql v. 4.0 unterstützt und ich habe eine 3.23.56 version!
bibo
Oi,
stimmt denn die bezeichnung der spalte? (gross-, kleinschreibung)
einmal hast du hier messID und einmal MessID angegeben...
gruß.
roger.
jop weil mir phpmyadmin das immer ändert bei der ausgabe aber ich geb es schon richtig case-sensitive ein!
bibo
Hi,
ich möchte einfach die anfänglichen 2 nachrichten oder wie auch immer geordnet nach der ID löschen!
was ist da so komisch?
ist es nich irrelevant in welcher Reiehnfolge gelöscht wird?
gelöscht ist gelöscht, wenn es trotzdem geht ist es ja okay.
irgendwie muss ich sie ja sortieren und limitieren!
warum? Beim Ausgeben vielleicht bzw. Du limitierst ja mit deiner where-Anweisung
ciao
romy
Oi romy,
was willst Du auch mit order by und limit in einer deleteanweisung?
warum sollte er nicht eine begrenzte Anzahl von DS in einer gewünschten Ordnung löschen können? Sieht so aus, als gäbe die Syntax von MySQL das her.
HTH Robert
Servus,
was willst Du auch mit order by und limit in einer deleteanweisung?
warum sollte er nicht eine begrenzte Anzahl von DS in einer gewünschten Ordnung löschen können? Sieht so aus, als gäbe die Syntax von MySQL das her.
Warum sollte er es nicht. Macht durchaus Sinn.
Falls es die Version von MYSQl hergiebt würde ich es in einem subselect erschlagen.
Ist nicht besser aber es klappt.
Ebenfalls '' bei Spaltenangaben?!?
Kann eigentlich nicht gut gehen.
Gruss Matze
PS. Ich würde behaupten order by + ASC sollte in einer delete anweisung gehen aber versteht das auch mysql?? Bitte nicht böse sein aber so manche Version von der DB kann ja nicht mal subselscts.
warum sollte er nicht eine begrenzte Anzahl von DS in einer gewünschten Ordnung löschen können? Sieht so aus, als gäbe die Syntax von MySQL das her.
Warum sollte er es nicht. Macht durchaus Sinn.
Falls es die Version von MYSQl hergiebt würde ich es in einem subselect erschlagen. Ist nicht besser aber es klappt.
AFAIK gibt es vor 4.1 keine Subselects. Warum auch in Erwägung ziehen, wenn die DELETE-Syntax für den vorliegenden Fall eine Lösung vorhält?
Ebenfalls '' bei Spaltenangaben?!? Kann eigentlich nicht gut gehen.
das hatten wir in dem Thread bereits ein Dutzend mal...
PS. Ich würde behaupten order by + ASC sollte in einer delete anweisung gehen aber versteht das auch mysql??
Wie? Wenn es in einer MySQL-Delete-Anweisung geht (also in MySQL syntaktisch korrekt ist), warum sollte MySQL es dann nicht verstehen? Oder verstehe _ich_ diesen Satz nicht?
Bitte nicht böse sein aber so manche Version von der DB kann ja nicht mal subselscts.
Gesteigerte Verwirrung meinerseits... Warum sollte ich böse sein? Wie gesagt, soweit ich weiß, stellt keine produktiv einsetzbare Version von MySQL Subselects zur Verfügung.
HTH Robert
Servus,
PS. Ich würde behaupten order by + ASC sollte in einer delete anweisung gehen aber versteht das auch mysql??
Wie? Wenn es in einer MySQL-Delete-Anweisung geht (also in MySQL syntaktisch korrekt ist), warum sollte MySQL es dann nicht verstehen? Oder verstehe _ich_ diesen Satz nicht?
Fakt ist siehe andereren Post.... hie im thread lag es daran. die Version kann es nicht.
Bitte nicht böse sein aber so manche Version von der DB kann ja nicht mal subselscts.
Gesteigerte Verwirrung meinerseits... Warum sollte ich böse sein? Wie gesagt, soweit ich weiß, stellt keine produktiv einsetzbare Version von MySQL Subselects zur Verfügung.
Musst nicht vwerwirrt sein, aber meines Wissen können es die neueren Version doch schon....Weis jedoch nicht ab welcher Version
Gruss Matze
Oi,
You have an error in your SQL syntax near 'ORDER BY 'MessID' ASC LIMIT 0 ,
2' at line 1
sieht so aus, als hätte Ole Dir die richtige Antwort gegeben. ORDER BY verlangt nach Namen oder Nummer der zu ordnenden Spalte. Was ist das bei Dir?
HTH Robert
messID ist eine auto_incement nummer!
nach der soll er sortieren!
messID ist eine auto_incement nummer!
Oi,
hast Du die Antwort von Ole gelesen? Der letzte Hinweis? Der ORDER-BY-Klausel folgt ein Stringliteral, welches die Spalte bezeichnet. Was bezweckst Du mit den Hochkommata?
HTH Robert
hast Du die Antwort von Ole gelesen? Der letzte Hinweis? Der ORDER-BY-Klausel folgt ein Stringliteral, welches die Spalte bezeichnet. Was bezweckst Du mit den Hochkommata?
HTH Robert
doch doch!
wenn ich Mysql selber ein select mit order by machne lasse, macht es auch die hochkomma! hab sie weggelassen und hat auch nicht funktioniert!
bibo
Der ORDER-BY-Klausel folgt ein Stringliteral, welches die Spalte bezeichnet. Was bezweckst Du mit den Hochkommata?
doch doch!
wenn ich Mysql selber ein select mit order by machne lasse, macht es auch die hochkomma! hab sie weggelassen und hat auch nicht funktioniert!
Oi,
daß es auch ohne Hochkommata noch nicht funktioniert, wird ja andernorts ausgiebig diskutiert.
Aber etwas Grundsätzliches zur Syntaxfrage und Deiner Erfahrung mit dem SELECT-Statement: selbst wenn ein von Dir formuliertes Statement mit einem hochkommabegrenzten Spaltenbezeichner als Argument der ORDER-BY-Klausel scheinbar fehlerlos abgearbeitet wird, so würde ich daraus nicht den Schluß ziehen, daß diese Syntax damit auf alle derartigen Anwendungsfehler fehlerlos übertragbar ist. Fakt ist, daß in allen (mir bekannten) SQL-Versionen - allen voran die Definitionen des ANSI-SQL - der Spaltenbezeichner ein Stringliteral ist. Dann haben wir noch nicht über die Langzeitstabilität Deines Statements bei Versionsänderungen gesprochen. Deshalb: _keine_ Begrenzungszeichen.
Sicherlich wirst Du mit einer strengen Einhaltung der dokumentierten Syntax eine sorgenfreieres Entwicklerleben haben, als wenn Du Dir eine eigene, verschrobene Es-ist-zwar-in-der-Doku-anders-beschrieben-aber-es-klappt-auch-so-Syntax aneignest. Die Tatsache, daß eine fehlerhafte Formulierung ein korrektes Ergebnis bringt, legitimiert nicht den Einsatz einer solchen Formulierung. Das gilt für Kodieren jeglicher Art.
HTH Robert
Hallo
DELETE FROM Instant WHERE SenderID='22' AND ReceiverID='6' OR SenderID='6' AND ReceiverID='22' ORDER BY 'MessID' ASC LIMIT 0 ,2
gehört das MessID wirklich in ' '?
Gruß
annA
weiss nicht, aber mysql mach wenn es sortiert mit einem select auch welche!
bibo