私は、フィールド「名」、「姓」、および(姓、名)から形成されたインデックスを持つSQLite DBテーブルに取り組んでいます。プライマリ インデックスは、整数の名前 ID です。検索引数(文字列)で始まる最初の名字を探したいのですが、
SELECT Given, Surname FROM NameTable WHERE Surname>'C' LIMIT 1
次に、Surname+Given インデックスを介して、一度に 1 行ずつ前進または後退します。SQLIte の「スクロール カーソル」の記事を読みましたが、その解決策は私のプログラムの構造に完全には適合しません。最近取得した姓を保存してから、これよりも小さい姓を照会すると、最新の名前の前に同じ姓を持ついくつかの名前がスキップされる可能性があるため、機能しません。
これは単純なインデックスに基づいているため、インデックスをステップ実行できる必要があります。(テーブル自体ではなく) インデックスの ROWID を直接参照することは可能ですか? たとえば、インデックスの行 1234 に対応するレコードを取得したばかりで、前に戻りたい場合、次のようにするにはどうすればよいでしょうか。
SELECT Given, Surname FROM NameTable WHERE ROWID<1234 (I realize this ROWID will refer to the table, not the index)
テーブルには、次のようなエントリが含まれます。
阿部 スミス バーニー・スミス スミス、メアリー スミス、マイク ...
スクロール間にDBに対して多くのクエリが発生する可能性があるため、準備/ステップアプローチを使用できないと思います。
別の方法として、姓と名を連結する検索引数をどのように作成しますか? それをプレースホルダーとして使用できます。
事前に感謝し、SQL初心者であることをお詫びします.