【问题标题】:How to insert a new row before an existing row in Android sqlite?如何在 Android sqlite 中的现有行之前插入新行?
【发布时间】:2014-11-02 08:54:05
【问题描述】:

我的表没有排序,我在代码逻辑中保持排序。

我想在表格的开头插入一个新行 - 在任何其他现有行之前。有没有办法做到这一点?谢谢。

【问题讨论】:

  • 一般在最后插入行。但是为什么您要在表格的开头插入

标签: android sqlite sql-insert


【解决方案1】:

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。)

【讨论】:

【解决方案2】:

如果您想定期执行此操作(例如当您想首先显示最新内容时),您可以正常存储它,但使用这样的查询反转数据。

select * from MYTABLE ORDER BY _id DESC 

此查询首先为您提供最新的行。

【讨论】:

    猜你喜欢
    • 2017-10-23
    • 2017-07-25
    • 2011-07-13
    • 2011-10-15
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多