我正在研究一个 SQLite DB 表,其中包含“名字”、“姓氏”字段和由(姓氏,给定)形成的索引。主索引只是一个整数名称 ID。我想找到以搜索参数(字符串)开头的第一个姓氏,
SELECT Given, Surname FROM NameTable WHERE Surname>'C' LIMIT 1
然后通过 Surname+Given 索引向前或向后一步,一次一行。我已阅读 SQLite“滚动光标”文章,但该解决方案不太适合我的程序结构。保存最近检索到的姓氏,然后查询小于这个姓氏的姓氏将不起作用,因为它可能会跳过最近名字之前但具有相同姓氏的几个名字。
由于这是基于一个简单的索引,因此应该可以单步执行该索引。是否可以直接引用索引的 ROWID(而不是表本身)?例如,假设您刚刚检索到与索引的第 1234 行对应的记录,并希望返回,您将如何完成这样的事情:
SELECT Given, Surname FROM NameTable WHERE ROWID<1234 (I realize this ROWID will refer to the table, not the index)
该表将包含以下条目:
史密斯,安倍 史密斯,巴尼 史密斯,玛丽 史密斯,迈克 ...
我认为我不能使用准备/步骤方法,因为在滚动之间可能会有很多针对数据库的查询。
作为替代方案,如何创建连接 Surname 和 Given 的搜索参数?我可以用它作为占位符。
在此先感谢,并为成为 SQL 新手而道歉。