Сортировать всю таблицу SQLite - PullRequest
5 голосов
/ 31 декабря 2010

У меня есть таблица SQLite, которую мне нужно отсортировать. Я знаком с командой ORDER BY, но это не то, чего я пытаюсь достичь. Мне нужна вся таблица, отсортированная в базе данных.

Пояснение:

В моей таблице используется столбец с именем rowed, который устанавливает порядок таблицы (ключ?). Мне нужно отсортировать таблицу по другому столбцу с именем name, а затем переназначить номера строк в алфавитном порядке согласно name Можно ли это сделать?

Ответы [ 2 ]

7 голосов
/ 19 июня 2013

Предполагая, что вы создали свою оригинальную таблицу следующим образом:

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

Вы можете создать другую отсортированную таблицу следующим образом:

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 ;

А если вы хотите заменить исходную таблицу:

DROP TABLE my_table ;
ALTER TABLE my_ordered_table RENAME TO my_table;
2 голосов
/ 01 января 2011

Я думаю, что эта проблема связана с желанием, чтобы первичный ключ что-то значил. Избегайте этой ловушки. Выберите произвольно сгенерированный первичный ключ, который однозначно идентифицирует строку данных и не имеет другого значения. В противном случае вы в конечном итоге столкнетесь с проблемой изменения значений первичного ключа, чтобы сохранить значение.

Хорошее объяснение того, почему вы должны полагаться на ORDER BY для получения данных в нужном порядке, вместо того, чтобы предполагать, что в противном случае данные будут отображаться в последовательности, определяемой первичным ключом, см. В ответе Кручана на аналогичный вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...