Ankündigung

Einklappen
Keine Ankündigung bisher.

Nicht mehr als 10 Eintraege in der Tabelle

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Nicht mehr als 10 Eintraege in der Tabelle

    hallo.
    Ich mache grade eine Shoutbox. Ich will aber nur die letzten 10 Eintraege in der DB speichern.

    Mein code schaut so aus, aber es wird ein Fehler gemeldet, ich habe aber absolut keine Ahnung warum...

    Code:
     DELETE FROM shoutbox WHERE (
    id < ((SELECT MAX( id )
    FROM shoutbox) -10)
    )
    warum geht das nicht?

  • #2
    aber es wird ein Fehler gemeldet
    Interessant. Müssen wir raten oder verrätst Du uns die Fehlermeldung?

    Kommentar


    • #3
      Er will keine subquerys. Das unterstuetzt meine SQL-Version noch nicht.
      Gibt es noch eine andere Moeglichkeit?

      Edit:
      Ich hab jetzt
      Code:
      DELETE FROM shoutbox ORDER BY date DESC LIMIT 5, 20
      probiert.

      Da kommt folgende 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 ' 20' at line 1
      Ich bin jetzt aber mit meinem Latein am Ende...
      Ich meine, es waere kein Problem, das in zwei queries zu loesen, aber das wollte ich eigentlich nicht...

      Kommentar


      • #4
        Zitat von http://dev.mysql.com/doc/mysql/en/delete.html
        DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
        [WHERE where_definition]
        [ORDER BY ...]
        [LIMIT row_count]
        kein offset.

        Reicht es nicht, wenn jeweils nur 10 Datensätze ausgelesen werden und die überflüssigen irgendwann mal -wie auch immer- gelöscht werden?

        Kommentar


        • #5
          Ich will das beim eintragen machen, da SELECT-Abfragen wesentlich zu haeufig sind...

          Daher wollte ich das beim Eintragen machen.
          Es geht mit zwei Abfragen ja ohne Probleme. Ich wollte es aber, wenn moeglich, in eine verpacken...

          Ich brauch ja nur die letzte ID zu selecten und 10 draufrechnen und dann delete...

          Naja, mach ich es halt in zwei queries...

          danke

          Kommentar


          • #6
            Ich will das beim eintragen machen, da SELECT-Abfragen wesentlich zu haeufig sind...
            ok, gute Idee.
            Aber mit LIMIT und den richtigen Indizes ist das völlig egal.
            Mysql geht nicht schon bei hundert oder tausend Datensätzen in die Knie

            Kommentar


            • #7
              meinst du nicht, dass bei einer Shoutbox, die eh nur 20 Eintraege anzeigt, es reichen wuerde, nur die letzten 50 in der DB zu halten?

              Kommentar


              • #8
                Ja, es reicht.
                Aber es ist auch egal, wenn da 100 oder 1000 Einträge in der Datenbank sind. Mehr will ich damit nicht sagen.

                Kommentar

                Lädt...
                X