Frank_: DB-Tabelle Sortieren

Hallo,

ich würde gerne meine Datenbanktabelle (MySQL), die ein paar gelöschte Einträge enthält, gerne so sortieren, dass die IDs (auto increment, Primärschlüssel), geordnet werden, wieder bei 1 beginnen und z.B. keine Lücken drin sind.

Ich habe PhpMyAdmin, weiß aber nicht, wie das geht. Könnt Ihr mir helfen?

Vielen Dank!

PS: Noch mal zur Verdeutlichung

Jetzt: 3,4,5,8,9

Soll: 1,2,3,4,5

  1. Hallo,

    ich würde gerne meine Datenbanktabelle (MySQL), die ein paar gelöschte Einträge enthält, gerne so sortieren, dass die IDs (auto increment, Primärschlüssel), geordnet werden, wieder bei 1 beginnen und z.B. keine Lücken drin sind.

    Warum?

    Eine ID ist ein eindeutiges Idenfikationsmerkmal, es darf sich per Definition niemals ändern.

    Wenn sich ID dennoch ohne Konseqenzen ändern kann, ist sie von vorne herein überflüssig.

    Wenn du dennoch dein vorhanden umsetzen willst - MySQL unterstützt auch Variablen und Zähler.

    Etwa so (nicht getestet):

    @counter := 1;  
    UPDATE  
      table  
    SET  
      id = @counter := @counter + 1  
    ORDER BY  
      id
    
    1. table

      Table ist ein reservierter Begriff :p

      Natürlich musst den auto_increment-Zähler danach wieder "zurücksetzen" bzw. korrekt einstellen.

      1. Danke schon einmal für die Antworten.

        Das Problem ist, dass ich in der neuen Tabelle 33 Einträge angelegt habe. Dann habe ich gepfuscht, musste einige Einträge löschen und das Prozedere startet jetzt immer bei ID=42. Ich würde aber gerne wueder bei 34 starten, allein weil's schöner ist. Bitte habt Verständnis für einen Ordnungsfreak und nennt mir eine Lösung :-) (hoffe ich habt den schmunzelnden Unterton "gelesen":)

        Gruß und danke!

        1. Hi!

          Ich würde aber gerne wueder bei 34 starten, allein weil's schöner ist.

          Den aktuellen auto_increment-Wert kann man im phpMyAdmin in der Lasche Operationen der betroffenen Tabelle ändern. Dabei wird ein ALTER-TABLE-Statement ausgeführt.

          Lo!

          1. Ich bedanke mich vielmals!

        2. Hallo,

          Das Problem ist, dass ich in der neuen Tabelle 33 Einträge angelegt habe. Dann habe ich gepfuscht, musste einige Einträge löschen und das Prozedere startet jetzt immer bei ID=42.

          das ist doch nicht schlimm. Ich würd's so lassen.

          Ich würde aber gerne wueder bei 34 starten, allein weil's schöner ist.

          ALTER TABLE hilft Dir:

          -- Setze den Wert des Autoincrementzählers zurück.  
          -- Beachte: Der Wert sollte größer sein als der größte derzeit in der  
          --          Tabelle vorhandene Wert. Die Engines MyISAM und InnoDB haben  
          --          unterschiedliches Verhalten, wenn der Wert nicht größer ist.  
          ALTER TABLE  
              tabelle            -- hier der Name Deiner Tabelle  
          AUTO_INCREMENT = 34  
          
          

          Freundliche Grüße

          Vinzenz

  2. Hallo,

    ich würde gerne meine Datenbanktabelle (MySQL), die ein paar gelöschte Einträge enthält, gerne so sortieren, dass die IDs (auto increment, Primärschlüssel), geordnet werden, wieder bei 1 beginnen und z.B. keine Lücken drin sind.

    Das ist keine gute Idee. Warum möchtest Du das tun?

    Es ist völlig normal und gar kein Problem, dass bei Autoincrement-Werten Lücken entstehen. Eine ID wird dafür verwendet, um einen Datensatz zu _id_entifizieren.

    Freundliche Grüße

    Vinzenz