我的表没有排序,我把它保存在代码逻辑中。
我想在表的开头插入一个新行 - 在任何其他现有行之前。有没有办法做到这一点?感谢。
答案 0 :(得分: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。)
答案 1 :(得分:0)
如果你想定期这样做(比如你想先显示最新的内容)你可以正常存储它,但是用这样的查询来反转数据。
select * from MYTABLE ORDER BY _id DESC
此查询首先为您提供最新行。