我试图通过此查询从我的fts表中获取最低_id
:
SELECT MIN(_id) FROM fts WHERE tbl_no=2 AND parent_id=6
我得到的结果是 10 。但是,最小的_id
9 ,它符合选择参数。
如果我改为使用
SELECT _id FROM fts WHERE tbl_no=2 AND parent_id=6
并选择第一行,我得到正确的结果: 9 。
是否与虚拟表(FTS)有关?我最近从多个表转移到单个FTS并且遇到了这个问题。
我保证在第二个查询中得到我想要的结果,考虑到表格从未更新过,默认排序。
备注:我在Android上运行此功能(尝试rawQuery
和query
)。我把桌子放在我面前,我知道它是正确的:
答案 0 :(得分:1)
_id
是数字还是字符串?
使用字符串比较,'10'< '9'。
尝试:
SELECT MIN(CAST(_id AS UNSIGNED)) FROM fts WHERE tbl_no=2 AND parent_id=6
要检查。我不会在生产中使用它,因为它将无法使用索引。
答案 1 :(得分:0)
在FTS表中,所有列都存储字符串值,字符串'10'
在字典上小于'9'
。
此外,MIN(SomeColumn)
不是全文搜索查询,因此效率不高。
对于FTS表中的唯一整数ID,您应该使用internal docid
column。