从SQLite数据库检索带项目的有序列表

从SQLite数据库检索带项目的有序列表,sql,sqlite,Sql,Sqlite,我正在为数据库设计表 在Android应用程序中,我从服务器下载JSON格式的有序列表。我将列表及其项插入SQLite数据库 列表表的列: + list_id + timestamp 列表项表的列: + item_id + timestamp + list of list_ids (a list item can be in multiple lists) 当我检索列表中的项目时,它们的顺序应该与我下载它们时的顺序相同。存储“列表顺序”的最有效方法是什么?一种方法是让项目有一个列,列中

我正在为数据库设计表

在Android应用程序中,我从服务器下载JSON格式的有序列表。我将列表及其项插入SQLite数据库

列表表的列:

+ list_id
+ timestamp
列表项表的列:

 + item_id
 + timestamp
 + list of list_ids (a list item can be in multiple lists)
当我检索列表中的项目时,它们的顺序应该与我下载它们时的顺序相同。存储“列表顺序”的最有效方法是什么?一种方法是让项目有一个列,列中有一对这样的列表:list:indexInList。请接受有关更好方法的建议


澄清:一个项目可以在列表中出现多次,例如列表中的项目id:1,2,3,1,5。

如果您有一个自动递增的id列,则将ORDER BY
id
添加到查询中。

你可以重新排列你的桌子

ALTER TABLE tbl_name ORDER BY col_name 

当您可能需要访问单个项目时,不应在列中存储值列表

对于这样的M:N关系,您通常使用:


一旦您有了此表,它将是在列表中存储项目顺序的自然位置。

谢谢。如果一个项目可以在列表中多次出现,该怎么办?如果您希望它出现在列表中,也可以。但是,您可能需要一个辅助列来进行排序。如果您不希望重复,请使用唯一索引来禁止重复。如果您希望为具有重复项的列编制索引重复您只使用索引而不是唯一索引。您可以在索引中使用多列。
CREATE TABLE items_in_lists (
    list_id INTEGER REFERENCES lists(list_id),
    item_id INTEGER REFERENCES items(item_id),
    PRIMARY KEY(list_id, item_id)
);