我從Sqlite數據庫中的項目表中檢索項目的有序列表。我如何交換ID,以便在Sqlite數據庫表中的兩個項目的順序?交換SQLite數據庫中的項目順序
3
A
回答
6
該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
相關問題
- 1. SQLite數據庫中的數據順序
- 2. 多個項目到SQLite數據庫
- 3. 在SQLite數據庫(iOS)中的行順序
- 4. 從SQLite數據庫檢索有序的列表項目
- 5. 順序數據數據庫
- 6. 數據層應用程序項目是否從Visual Studio數據庫版本中替換數據庫項目?
- 7. ListView中的項目順序
- 8. 更換同一項目的順序
- 9. Visual Studio 2012數據庫項目發佈列順序
- 10. 跟蹤項目順序存儲和從數據庫檢索
- 11. SQLite的定製順序返回數據
- 12. 替換android中的sqlite數據庫
- 13. intellij idea中的SQLite數據庫目錄
- 14. limite sqlite數據庫條目
- 15. 在ng-repeat中從數據庫中提取項目的反向順序
- 16. 刪除SQLite數據庫中的項目,而不id字段
- 17. 如何將Sqlite數據庫添加到我的項目中?
- 18. 如何全面刷新object-c項目中的sqlite數據庫?
- 19. 無法更新數據庫中的項目[sqlite]
- 20. 更新SQLite數據庫中某個項目的ID
- 21. 如何在iPhone項目中指定sqlite數據庫的路徑?
- 22. 哪裏可以找到Ionic2/3項目中的SQLite數據庫?
- 23. 將外部SQLite數據庫導入到我的項目中
- 24. Eclipse顯示SQLite數據庫中的所有項目
- 25. ListView不顯示存儲在SQLite數據庫中的項目
- 26. Javascript/JSON:交換數組中的項目
- 27. 將現有的數據庫轉換爲數據庫項目
- 28. SQLite的順序
- 29. 有什麼方法來存儲數據庫中的項目順序?
- 30. 什麼定義了VS2012數據庫項目中腳本執行的順序?
那你最終會一起去?一系列或多個鏈接是否適合您? – bryanmac