2014-11-02 2 views
0

Моя таблица не сортируется, и я держу ее в логике кода.Как вставить новую строку перед существующей строкой в ​​Android-sqlite?

Я хотел бы вставить новую строку в начале таблицы - перед любой другой существующей строкой. Есть ли способ сделать это? Благодарю.

+2

Обычно он вставляет строку в конец. но почему вы хотите вставить в начале таблицы –

ответ

2

Таблицы SQL не имеют определенного порядка; чтобы возвращать строки в определенном порядке, вы должны обязательным условием использовать предложение ORDER BY.

В SQLite строки таблицы хранятся в порядке их внутреннего rowid (что также является значением столбца INTEGER PRIMARY KEY, если таковые имеются). Для сохранения строки перед всеми другими строками, вставить новую строку со значением rowid, который меньше, чем все остальные:

INSERT INTO MyTable(rowid, Name, Comment) 
VALUES ((SELECT MIN(rowid) FROM MyTable) - 1, 'me', 'first!'); 

(Пожалуйста, обратите внимание, что первый пункт все еще применяется, порядок хранения не гарантируется запрос вам все равно нужно использовать ORDER BY.)

+0

Итак, как я узнаю, какой идентификатор должен быть помещен в rowid, который приведет к тому, что строка будет вставлена ​​перед другими? –

+0

Кроме того, я читал, что rowid начинается с 1 и не имеет знака, что означает, что я не могу поставить строки перед ним. Источник: https://www.sqlite.org/lang_createtable.html и https://www.sqlite.org/queryplanner.html –

+0

'rowid' может быть отрицательным. –

0

Если вы хотите делать это регулярно (например, когда вы хотите отображать последний контент в первую очередь), вы можете сохранить его в обычном режиме, но сбрасывать данные с таким запросом.

select * from MYTABLE ORDER BY _id DESC 

Этот запрос дает вам последнюю строку в первую очередь.

Смежные вопросы