查询FTS表MIN

时间:2014-08-19 16:18:52

标签: android mysql sql sqlite full-text-search

我试图通过此查询从我的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上运行此功能(尝试rawQueryquery)。我把桌子放在我面前,我知道它是正确的:

enter image description here

2 个答案:

答案 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