我无法定位数据库中的特定行
我希望能够从表联系人中选择WHERE行号= 5(例如)
select * from Contacts WHERE RowNum = 5
这不起作用,但是应该选择行号为5的数据。
编辑:现在已修复,正确的代码是:
("select rowid, * from Contacts WHERE rowid = $num+1")
答案 0 :(得分:0)
尽管您找到了可行的解决方案;使用 rowid 可能会遇到持续的问题。
依赖于根据 rowid 的顺序显示的列表,这不一定是用户可以接受的。
不能保证 rowid 列会单调增加(尽管很有可能,除非您到达9223372036854775807第一行)。
如果删除行,行将不反映第n行,行将保持原样,但是VACUUM(清理)将重新编号< strong> rowid 。
如果现有的最高 rowid 是9223372036854775807,则将尝试分配一个随机值,该值在分配了新的 rowid (新插入行)。
如果没有rowid的别名,则以上内容为true。如果存在有关VACUUM的行为,则将保留 rowid 值,因此不会重新编号。
使用column_name INTEGER PRIMARY KEY
定义列是使列成为 rowid
通常在显示列表时需要第n个位置。
Alan
Mary
Bert
Sue
Fred
Jane
Zac
Louise
然后Fred是列表中的第5个或数组偏移量4处的元素,因此 rowid 5将是Fred 如果按上述顺序插入数据
但是,如果列表按名称排序,则将显示为:-
Alan
Bert
Fred
Jane
Louise
Mary
Sue
Zac
如果从 rowid 角度考虑,该列表将是
1 (Alan)
3 (Bert)
5 (Fred)
6 (Jane)
8 (Louise)
2 (Mary)
4 (Sue)
7 (Zac)
因此,弗雷德现在排名第三,但是使用WHERE rowid = 3
会选择伯特而不是弗雷德。
删除除最后一行以外的任何一行(无顺序)会导致方程rowid = number in list
之间的差异。
行的预期用途是标识特定行,而不是预期值。在上述所有情况下,都可以通过显示列表但具有 rowid 的并行数组来消除复杂性,因此,当选择Fred作为偏移量4时,将偏移量4放入并行数组中将得到一个值5。