Vinzenz Mai: /MySQL5: Problem mit Abfragelogik

Beitrag lesen

Hallo Roger,

Von den Datensätzen sind ca 30 vorhanden (variiert). Ich möchte aber, das nur die 10 neuesten in der DB stehen.

Das verstehe ich zwar nicht, aber Du wirst Deine Gründe dafür haben.

Also brauche ich eine Routine, die mir die ältesten 20 ermittelt. Dabei tritt folgendes Problem auf:
Ich muss den Timestamp des 10. Eintrages bestimmen, um alle älteren löschen zu können.

Nein, das ist keineswegs erforderlich. Es wäre eine Möglichkeit.

Schaff ich das alles in eine Abfrage zu stopfen? Im Zeitalter von MySQL5 und Sub-Selects müsste das doch gehen.

Nein, das geht auch im Zeitalter von MySQL 5 nicht, sagt zumindest die MySQL-5-Doku:

<zitat>
    Currently, you cannot delete from a table and select from the same
    table in a subquery.
</zitat>

Oder wäre das zu unperformant?

Sorry, dass ich lächle. Aber Performance bei 10-30 Datensätzen ...

Gibt es evtl. eine elegantere Methode (vllt. Stored Procedures)?

Eine Stored Procedure wäre eine Möglichkeit.

DELTE FROM table WHERE timestamp < timestamp\_vom\_10ten\_eintrag; :)

Hast Du Dir schon überlegt, was Deine Löschaktion auslösen - oder soll ich lieber "triggern" sagen - soll?

Freundliche Grüße

Vinzenz