MYSQL 5.0-> Datensätze auf maximal 20 begrenzen -> Beispiel
Guma
- datenbank
Hallo zusammen, ich kniffle gerade an folgendem Syntax:
// es soll auf maximal 20 Datensätze begrenzt werden, falls es mehr sind soll auf maximal 20 gelöscht werden.
DELETE FROM archiv WHERE nid=14 ORDER BY id DESC LIMIT (
SELECT COUNT( * )
FROM archiv
WHERE nid =1441
) -20
Ich bekomme einen Fehler:
#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 '(SELECT COUNT(*) FROM archiv WHERE nid=14) - 20' at line 1
Kann ich beide DB-Abfragen nicht zusammenlegen? MYSQL Version 5.0
Guma
DELETE FROM archiv WHERE nid=14 ORDER BY id DESC LIMIT (
SELECT COUNT( * )
FROM archiv
WHERE nid =1441
) -20
Willst du von der ANzahl der Datensätze 20 abziehen?
LIMIT 0,20
dürfte das sein, was du willst.
LIMIT 0,20 dürfte das sein, was du willst.
Gähn, danke, LIMIT begrenzt die Ausgabe.
Ich will falls mehr als 20 Einträge da sind auf maximal 20 Einträge löschen.
Guma
Ich prüfe deinen Ansatz nochmal, danke
Nimmt SQL nicht an
DELETE FROM 'archiv' WHERE nid = '1441' ORDER BY id DESC LIMIT 0,20
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 ''archiv' WHERE nid='1441' ORDER BY id DESC LIMIT 0,20' at line 1
Hi,
DELETE FROM 'archiv' WHERE nid = '1441' ORDER BY id DESC LIMIT 0,20
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 ''archiv' WHERE ...
Und warum willst du aus einem String etwas löschen?
MfG ChrisB
Ich will datensätze löschen, keine strings.
Grund: mehr als 20 dürfen es nicht werden, es ist ein Archiv mit den letzten 20 Änderungen.
Ich möchte aus einer Tabelle nur die letzten 20 Einträge übrig lassen und alles andere löschen und das möglichst in einem query.
Hi,
Ich will datensätze löschen, keine strings.
Und woraus willst du diese Datensätze löschen ...?
Nicht aus einem String, also gib auch keinen solchen an.
MfG ChrisB
Tach!
DELETE FROM archiv WHERE nid=14 ORDER BY id DESC LIMIT (SELECT [...]) -20
Kann ich beide DB-Abfragen nicht zusammenlegen? MYSQL Version 5.0
Ja, kannst du nicht. Der LIMIT-Klausel kann man nur begrenzt etwas anderes als Integer-Konstanten übergeben.
dedlfix.
Hallo,
» DELETE FROM archiv WHERE nid=14 ORDER BY id DESC LIMIT (
> SELECT COUNT( * )
> FROM archiv
> WHERE nid =1441
> ) -20
#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 '(SELECT COUNT(*) FROM archiv WHERE nid=14) - 20' at line 1
Du hast offensichtlich das Handbuch nicht geprüft, sonst fragtest Du nicht:
Kann ich beide DB-Abfragen nicht zusammenlegen? MYSQL Version 5.0
"Currently, you cannot delete from a table and
select from the same table in a subquery."
Das gilt im Übrigen auch für MySQL Version 5.6.
Das Handbuch beschreibt durchaus Strategien, die Du anwenden könntest.
Freundliche Grüße
Vinzenz
danke vinzenz ich gehe dem jetzt nach