【发布时间】:2014-11-02 08:54:05
【问题描述】:
我的表没有排序,我在代码逻辑中保持排序。
我想在表格的开头插入一个新行 - 在任何其他现有行之前。有没有办法做到这一点?谢谢。
【问题讨论】:
-
一般在最后插入行。但是为什么您要在表格的开头插入
标签: android sqlite sql-insert
我的表没有排序,我在代码逻辑中保持排序。
我想在表格的开头插入一个新行 - 在任何其他现有行之前。有没有办法做到这一点?谢谢。
【问题讨论】:
标签: android sqlite sql-insert
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。)
【讨论】:
rowids 可以为负数。
如果您想定期执行此操作(例如当您想首先显示最新内容时),您可以正常存储它,但使用这样的查询反转数据。
select * from MYTABLE ORDER BY _id DESC
此查询首先为您提供最新的行。
【讨论】: