Wenn das Feld Ihr Primärschlüssel ist...
... dann sollten Sie, wie an anderer Stelle zu dieser Frage erwähnt, die IDs nicht ändern. Die IDs sind bereits eindeutig und Sie müssen und wollen sie nicht wiederverwenden.
Nun, das sagte...
Ansonsten...
Gut möglich, dass Sie eine andere haben Feld (d. h. ebenso wie die PK) für einige anwendungsdefinierte Reihenfolgen. Solange diese Reihenfolge nicht in einem anderen Feld enthalten ist (z. B. wenn es benutzerdefiniert ist), ist daran nichts auszusetzen.
Sie könnten die Tabelle mit einem (temporären) auto_increment
neu erstellen Feld und entfernen Sie dann das auto_increment
danach.
Ich wäre versucht zu UPDATE
in aufsteigender Reihenfolge und wenden Sie eine inkrementierende Variable an.
SET @i = 0;
UPDATE `table`
SET `myOrderCol` = @i:[email protected]+1
ORDER BY `myOrderCol` ASC;
Es scheint ziemlich verschwenderisch zu sein, dies jedes Mal zu tun Sie löschen Elemente, aber leider können Sie bei diesem manuellen Sortieransatz nicht viel dagegen tun, wenn Sie die Integrität der Spalte aufrechterhalten möchten.
Eventuell könnte man die Last reduzieren, indem man nach dem Löschen des Eintrags mit myOrderCol
gleich, sagen wir, 5
:
SET @i = 5;
UPDATE `table`
SET `myOrderCol` = @i:[email protected]+1
WHERE `myOrderCol` > 5
ORDER BY `myOrderCol` ASC;
Dadurch werden alle folgenden Werte um eins nach unten "gemischt".