2010-12-31 13 views
5

Mam tabelę SQLite, którą muszę posortować. Jestem zaznajomiony z poleceniem ORDER BY, ale nie jest to tym, co próbuję osiągnąć. Potrzebuję całej tabeli posortowanej w bazie danych.Sortowanie całej tabeli SQLite

Objaśnienie:

Moja tabela wykorzystuje kolumnę o nazwie „rowid”, który określa kolejność w tabeli (klucz?). Muszę posortować tabelę według innej kolumny o nazwie "nazwa", a następnie ponownie przypisać numery wierszy w porządku alfabetycznym według "nazwy". Czy można to zrobić?

Każda pomoc będzie bardzo ceniona!

Dziękuję bardzo!

+0

To nie jest dobry pomysł, aby wymienić kolumny 'rowid'. To już ma specjalne znaczenie w SQLite. – dan04

Odpowiedz

2

Myślę, że ten problem dotyczy chęci, aby klucz podstawowy coś znaczył. Unikaj tej pułapki. Wybierz arbitralnie wygenerowany klucz podstawowy, który jednoznacznie identyfikuje wiersz danych i nie ma żadnego innego znaczenia. W przeciwnym razie pojawi się problem zmiany wartości klucza podstawowego w celu zachowania znaczenia.

Dla dobrego wyjaśnienia dlaczego powinno polegać na ORDER BY do pobierania danych w żądanej kolejności zamiast zakładając dane będzie inaczej pojawiają się w kolejności ustalonej przez klucz podstawowy patrz odpowiedź cruachan jest do similar question

5

Zakładając, stworzył swój oryginalny stół tak:

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

można utworzyć inny posortowana tabela tak:

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 ;

A jeśli potem chce zastąpić orignal tabeli:

DROP TABLE my_table ;

ALTER TABLE my_ordered_table RENAME TO my_table;

Powiązane problemy