gpt4 book ai didi

iphone - 交换 SQLite 数据库中项目的顺序

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:11:28 24 4
gpt4 key购买 nike

我从 Sqlite 数据库中的项目表中检索有序的项目列表。如何交换 id 以便 Sqlite 数据库表中两个项目的顺序?。

最佳答案

id 不应决定位置或顺序。它应该是一个不可变的标识符。

如果您需要在数据库中表示订单,则需要创建另一个 orderNumber 列。几个选项是 (1) 要么具有跨越一个范围的值,要么 (2) 具有指向下一个的指针(如链表)。

对于范围:跨越一个范围可以帮助您避免重写插入点之后所有项目的 orderNumber 列。例如,在范围内,插入第一个得到 1,插入第二个得到最大范围,在第一个和第二个之间插入第三个得到中间值——如果你重新定位,你必须分配它之间的项目的中点。一个缺点是如果列表有足够的变动(通过大跨度最小化),您可能必须重新平衡范围。这个解决方案的优点是你可以通过在 sql 语句中按此列排序来获得有序列表。

对于链表:如果数据库有一个下一列指向它后面的 id,你需要更新几行来插入一些东西。好处是它很简单。缺点是你不能在 sql 语句中排序——你依赖于获取列表的代码来对其进行排序。

另一种变体是您可以从该表中完全提取有序列表数据。例如,您可以有一个包含 listid、itemid、orderedNumber 的有序列表。这允许您在它引用的那个表中拥有一个或多个逻辑排序的项目列表。

其他一些引用:

How to store ordered items which often change position in DB

Best way to save a ordered List to the Database while keeping the ordering

https://dba.stackexchange.com/questions/5683/how-to-design-a-database-for-storing-a-sorted-list

关于iphone - 交换 SQLite 数据库中项目的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12214966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com