Da brauchst du kein ORDER BY mitzugeben, da der Befehl so eh alles löscht.
Wenn du bestimmte Datensätze löschen willst, arbeite mit einer WHERE- Bedingung.
Das Problemm ist eigentlich zu dumm um es hier zu Posten. Aber laut allen Foren und Manuals sollte das funktionieren und tut es trotzdem nicht.
MySQL Version 5.0.44;
Tabelle table_test besteht aus zwei Spalten: id und test;
Mysql-Abfrage: "DELETE FROM table_test ORDER BY id";
Fehlermeldung: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY id' at line 1"
Ich möchte noch ein LIMIT hinzufügen, aber es macht keinen Sinn solange dieser Teil nicht funktioniert. Hatte jemand etwas vergleichbares?
Da brauchst du kein ORDER BY mitzugeben, da der Befehl so eh alles löscht.
Wenn du bestimmte Datensätze löschen willst, arbeite mit einer WHERE- Bedingung.
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
es geht ja um limit
Das sollte aber in jedem Fall funktionieren. Hast Du es in pma direkt probiert?
delete/update mit Order By gibts seit MySQL 4.0.0![]()
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
so eine antwort habe ich ja befürchtet. der gedanke dahinter ist ja simpel: man möchte aus einer tabelle nur die letzten 100 einträge übrig lassen und alles andere löschen und das möglichst in einem query.
danke, das ist eine sehr gute idee. ich habe es ausprobiert und hier ist die antwort:es geht ja um limit
Das sollte aber in jedem Fall funktionieren. Hast Du es in pma direkt probiert?
delete/update mit Order By gibts seit MySQL 4.0.0
Fehler
SQL-Befehl:
DELETE FROM table_test ORDER BY id
MySQL meldet: Dokumentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY id' at line 1
ich benutze phpMyAdmin 2.11.5 von domaingo.de
Hallo Erdferkel,
heisst deine Tabelle tatsächlich so oder nimmst Du table_test nur als Platzhalter? Wenn Platzhalter, schreibt doch mal die echte Struktur und Statement hier rein. Allzu oft haben Leute schon Platzhalter verwendet, während die echte Tabelle aber ganz andere Spaltennamen benutzte, was letztendlich den Fehler verursacht hat. (Stichwort reservierte Keywords) Helfer raten hier dann herum und kommen auf keinen grünen Zweig, weil man mit mangelhafter Info versorgt wurde.
Ansonsten solltest Du auch wirklich entweder eine WHERE Klausel und/oder ein LIMIT mit anhängen. 10 Sekunden googlen förderten einen Eintrag im MySQL Bugtracker zutage, in dem beschrieben wird, dass MySQL (je nach Version) mit einem Error quittiert, wenn man in Verbindung mit DELETE ein ORDER BY benutzt, es aber unterläßt ein LIMIT oder ein WHERE zu benutzen. Es ist, rein von der Logik her, vollkommen unsinnig den Inhalt einer ganzen Tabelle zu sortieren um den Inhalt vorher in eine bestimmte Reihenfolge zu bringen, nur um sie dann zu löschen. Oder sortierst Du einen Stapel Zeitschriften auch erst nach Alphabet, bevor Du sie in's Altpapier wirfst?![]()
#.Viele Grüße - Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
PHP Tutorials und kostenlose Scripts gibt's bei phpBuddy.eu
Follow phpBuddy on Twitter
LTFB - anfängerfreundliche Tutorials
.
danke, auch dem bin ich nachgegangen.
die tabelle heißt wirklich table_test, hat zwei spalten => id (INT, auto_increment, primary_key) und test (VARCHAR, 3). die tabelle ist gefüllt mit zweihundert datensätzen. in jeder zeile hat test den wert "yes".
Die Abfrage lautet jetzt:
mysql_query("DELETE FROM table_test ORDER BY id LIMIT 10") or die(mysql_error());
Die Antwort ist wenig tröstend:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY id LIMIT 10' at line 1
!!! Ich weiss dass man dieses Problem auch umgehen kann, aber es geht mir gerade darum, dass diese Lösung nach allen Regeln klappen sollte und es doch nicht tut. Ich möchte einfach die Ursache finden. Ich hoffe ihr könnt mir dabei helfen.
Vielleicht sollte man mal schauen, welche MySQL Version es ist.
Vielleicht wäre es auch mit Subqueries möglich:
Code:DELETE FROM table_test WHERE id <= (SELECT MAX(id) FROM table_test) LIMIT 10
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
also ich habs ausprobiert und (erwarteter Weise) keinen Fehler!
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Ich habe es gerade auch auch auf einem anderen Server ausprobiert (von 1&1) und es ging.
Der Vergleich der beiden INI-Dateien ergibt:
1&1:
domain*gomysql
MySQL Support enabled
Active Persistent Links 0
Active Links 1
Client API version 5.0.32
MYSQL_MODULE_TYPE external
MYSQL_SOCKET /var/run/mysqld/mysqld.sock
MYSQL_INCLUDE -I/usr//include/mysql
MYSQL_LIBS -L/usr//lib -lmysqlclient
Directive Local Value Master Value
mysql.allow_persistent On On
mysql.connect_timeout 60 60
mysql.default_host no value no value
mysql.default_password no value no value
mysql.default_port no value no value
mysql.default_socket no value no value
mysql.default_user no value no value
mysql.max_links Unlimited Unlimited
mysql.max_persistent Unlimited Unlimited
mysql.trace_mode Off Off
Aber woran das genau liegt weiss ich immer noch nicht. Gibt es irgendwo sonst noch MySQL-Optionen, die man nachschauen könnte, außer in der phpinfo()?mysql
MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version 5.0.44
MYSQL_MODULE_TYPE external
MYSQL_SOCKET /var/run/mysqld/mysqld.sock
MYSQL_INCLUDE -I/usr/local/mysql/include
MYSQL_LIBS -L/usr/local/mysql/lib -lmysqlclient
Directive Local Value Master Value
mysql.allow_persistent Off Off
mysql.connect_timeout 60 60
mysql.default_host no value no value
mysql.default_password no value no value
mysql.default_port no value no value
mysql.default_socket no value no value
mysql.default_user no value no value
mysql.max_links Unlimited Unlimited
mysql.max_persistent Unlimited Unlimited
mysql.trace_mode Off Off
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)