2010-12-31 13 views
5

Ich habe eine SQLite-Tabelle, die ich sortieren muss. Ich kenne den Befehl ORDER BY, aber das versuche ich nicht. Ich brauche die gesamte Tabelle innerhalb der Datenbank sortiert.Sortieren einer gesamten SQLite-Tabelle

Erläuterung:

Meine Tabelle verwendet eine Spalte namens „Rowid“, die die Reihenfolge der Tabelle enthält (einen Schlüssel?). Ich muss die Tabelle nach einer anderen Spalte namens "name" sortieren und dann die Zeilennummern in alphabetischer Reihenfolge nach "name" neu zuweisen. Kann das gemacht werden?

Jede Hilfe würde sehr geschätzt werden!

Vielen Dank!

+0

Es ist keine gute Idee, eine Spalte 'rowid' zu nennen. Das hat in SQLite schon eine besondere Bedeutung. – dan04

Antwort

2

Ich denke, dieses Problem bezieht sich darauf, dass der Primärschlüssel etwas bedeuten soll. Meide diese Falle. Wählen Sie einen beliebig generierten Primärschlüssel, der eine Datenzeile eindeutig identifiziert und keine andere Bedeutung hat. Andernfalls werden Sie schließlich auf das Problem stoßen, die Primärschlüsselwerte ändern zu wollen, um die Bedeutung zu bewahren.

Für eine gute Erklärung, warum Sie auf ORDER verlassen sollten durch die Daten in der gewünschten Reihenfolge abzurufen, anstatt die Daten unter der Annahme sonst in einer Sequenz durch den Primärschlüssel bestimmt wird angezeigt sehen Cruachan Antwort auf eine similar question

5

Angenommen, erstellt Sie Ihre ursprüngliche Tabelle wie folgt:

CREATE TABLE my_table (rowid INTEGER PRIMARY KEY, name TEXT, somedata TEXT) ;

Sie eine andere sortierte Tabelle wie so erstellen:

CREATE TABLE my_ordered_table (rowid INTEGER PRIMARY KEY, name TEXT, somedata TEXT) ;

INSERT INTO my_ordered_table (name, somedata) SELECT name,somedata FROM my_table ORDER BY name ;

Und wenn man dann die Orignal-Tabelle ersetzt werden soll:

DROP TABLE my_table ;

ALTER TABLE my_ordered_table RENAME TO my_table;