我正在尝试选择第一行和之后的每第五行(这给了我 4 个具有唯一行的查询)但我不确定它是否正确,因为我的结果与预期不符。
//create the nth row selection
int n = level + 5;
//query the content resolver
Cursor cursor = contentResolver.query(
MainContentProvider.CONTENT_URI_ENGLISH,
DatabaseOpenHelper.PROJECTION_ENGLISH,
DatabaseOpenHelper.KEY_ROW_ID + " = " + (level+1) + " OR " + DatabaseOpenHelper.KEY_ROW_ID +" % " + n +" = 0",
null,
DatabaseOpenHelper.KEY_ROW_ID + " ASC"
);
其中level
在[0,3]
区间内。
结果加起来不等于预期值,并且要少两倍(大约)。
我的查询方法应该如何选择从第一行开始的每第五行?
最佳答案
您可以使用如下查询来实现此目的(虽然我不确定它的性能):
SELECT
id,
name,
(SELECT count(*) - 1 FROM my_table t_inner WHERE t.id >= t_inner.id) AS ordinal
FROM my_table t
WHERE ordinal % 5 == 0
ORDER BY id ASC;
或者您可以创建 CursorWrapper
,它将返回行的子集。这种方法的缺点是您必须从数据库中获取每一行,如果您有大量数据,这可能会很慢。
关于android - 从 sqlite 数据库中选择每第 n 个术语,包括第一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22337285/