Ich habe eine Tabelle mit vielen Zeilen, aber sie sind nicht in Ordnung. Ich benutze das Feld "id" als Primärschlüssel. Ich habe auch ein "date" -Feld, das ein Datetime-Feld ist.
Wie könnte ich die Tabelle neu indizieren, so dass die Einträge in chronologischer Reihenfolge gemäß dem Datumsfeld
identifiziert werden Warum möchten Sie, dass die ID-Reihenfolge mit den Daten übereinstimmt? Es klingt, als ob du ORDER BY id
machen willst und die Reihen in der Reihenfolge des Datums zurückkommen. Wenn Sie Zeilen in Datumsreihenfolge verwenden möchten, verwenden Sie stattdessen ORDER BY date
.
Werte in einer Autoinkrement-ID-Spalte sollten als willkürlich behandelt werden. Es ist keine gute Idee, sich darauf zu verlassen, dass sich Ihre IDs in der richtigen Reihenfolge befinden.
Das folgende SQL-Snippet sollte tun, was Sie wollen.
%Vor% Beachten Sie, dass Sie niemals die Reihenfolge einer automatisch inkrementierten Spalte garantieren können, nachdem Sie mit dem Einfügen und Entfernen von Daten begonnen haben. Daher sollten Sie sich nicht auf eine Reihenfolge verlassen, die in Ihren Abfragen ORDER BY
angibt. Dies ist eine teure Operation, die Sie durchführen, da Indizes vollständig neu erstellt werden müssen. Daher würde ich nicht empfehlen, dies häufig zu tun.
Sie können ALTER TABLE verwenden t ORDER BY col; Die zulässige Syntax von ORDER BY ist wie in SELECT-Anweisungen.
Ich musste etwas Ähnliches tun. Der beste Weg, dies zu tun, war der folgende ( Sie können es in einer SQL-Abfrage ausführen, wenn Sie wollen, aber bedenken Sie, dass dies eine langsame und sehr ressourcenintensive Operation ist ):
MACHEN SIE SICH SICHER, EINE SICHERUNG IHRER TABELLE, EINSCHLIESSLICH STRUKTUR UND DATEN, ZU MACHEN, BEVOR SIE DIESE FRAGE STARTEN!
%Vor%Vergessen Sie nicht, "your_table" mit dem Namen Ihrer Tabelle und den ORDER BY-Spalten zu ändern. Hier erkläre ich Ihnen Schritt für Schritt, was Sie tun:
Tags und Links mysql