MYSQL: Ältesten Eintrag löschen

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

  • MYSQL: Ältesten Eintrag löschen

    Hi Forum,
    ich habe ein Problem, ich habe eine Tabelle "News" angelegt. In dieser Tabelle habe ich 5 Reihen. Mehr sollen es nicht werden, da ich mit php Zählen wie viele Rows es sind... Sind es mehr als 5 Rows, dann soll der letzte eintrag gelöscht werden. Gibt es irgend eine Möglichkeit das mit MYSQL zu Regeln... Also mittels WHERE-Klausel...Ich habe eine Datenfeld timestamp (die Spalte heißt zeitstempel)

    Also DELETE FROM news WHERE ÄLTESTER EINTRAG

    So in der Art..ich habe nur keine Ahnung wie ich das in Mysql umsetzen kann...


    Thx und cya
    trekkie2003
    www.hsv-hockenheim.com
    www.carl-theodor-schule.de
    www.hockenheimring.de
    www.uni-heidelberg.de

  • #2
    hmm,

    sehe ich es richtig und du willst nur die neusten 5 ausgeben ? Dann mach doch

    SELECT * FROM <tab> ORDER BY <datumsspalte> LIMIT 0,5

    dann bekomsmt du immer die neusten 5
    Ich mein soviel Dataspace muss schon sein dass man mehr als 5 Datensätze speichern darf

    Oder ?

    Kommentar


    • #3
      hm hm,

      Villeicht etwas umständlich aber wenn immer der letzte Eintrag gelöscht werden soll, einfach die Select-Anweisung nach dem timestamp sortieren und dann mit dem ersten ermittelten timestamp-Wert die Delete Anweisung ausführen.

      hth

      Intus

      *vbg*

      eventuell vergibts du ja ein auto_increment dann sollte es auch:

      delete MIN('ID') From Tabelle

      tun.
      Zuletzt geändert von Intus; 04.09.2003, 23:31.

      Kommentar


      • #4
        wenn du unbedingt löschen willst:

        die id der neuesten 5 beiträge raussuchen und danach alle löschen bei denen ide id andersist

        oder:

        zählenwieviel einträge es sind, bei 5 einträgen den ältesten raussuchen und überschreiben
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          MIN()

          Hi ich vergebe eine Spalt mit auto_increment!
          Heißt das dann wie folgt:
          DELETE FROM news WHERE MIN(id)???
          Ich glaube deine Syntax ist da nicht 100%ig korrekt...oder irre ich mich?

          Tschau
          trekkie2003
          www.hsv-hockenheim.com
          www.carl-theodor-schule.de
          www.hockenheimring.de
          www.uni-heidelberg.de

          Kommentar


          • #6
            habe auch gerade gemerkt das mysql das mit dem Min() nicht will.

            aber da du ein Zeitstempel nutzt nimm doch einfach

            DELETE FROM News ORDER BY zeitstempel LIMIT 1

            hth

            Intus

            Kommentar


            • #7
              hi

              jo mach ich so...danke für die anregungen...
              aber glaueb du hast wieder einen Fehler in der Syntax:
              Muss glaub ich LIMIT 0,1 heißen

              0 ist der Startwert und 1 ist Step...alsow wieviele Datensätze er holen soll!
              Tschau
              trekkie2003
              www.hsv-hockenheim.com
              www.carl-theodor-schule.de
              www.hockenheimring.de
              www.uni-heidelberg.de

              Kommentar


              • #8
                Also, es ist kein Syntaxfehler...

                Es ist einfach nur optmiert.

                bei LIMIT x im Zusammenhang mit ORDER BY wird das sortieren nach x gefundenen Zeilen beendet.

                Intus

                Kommentar


                • #9
                  Wow...

                  WWWWOOOOOOWWWWW,habe ich es mit einem MySQL Profi zu tun!!???

                  Tschau und vielen Dank für deine Hilfe!
                  cya
                  trekkie2003
                  www.hsv-hockenheim.com
                  www.carl-theodor-schule.de
                  www.hockenheimring.de
                  www.uni-heidelberg.de

                  Kommentar

                  Lädt...
                  X