【发布时间】:2018-02-14 11:40:45
【问题描述】:
Android API docs 似乎表明查询 SQLite 数据库时提供的限制子句是一个字符串。
这对我来说没有多大意义。
大概是在内部转换成整数吧?
还是这里涉及到其他问题?
【问题讨论】:
标签: android android-sqlite sql-limit
Android API docs 似乎表明查询 SQLite 数据库时提供的限制子句是一个字符串。
这对我来说没有多大意义。
大概是在内部转换成整数吧?
还是这里涉及到其他问题?
【问题讨论】:
标签: android android-sqlite sql-limit
我认为他们要考虑的关键是该参数不仅适用于单个第一部分(参见下面的 expr1),而且适用于整个LIMIT 子句。
这个子句可以像一个整数一样简单,但也可以相对复杂; LIMIT 子句的完整语法是:-
LIMIT expr1 OFFSET (or ,) expr2;see - SELECT
在哪里:-
至少在理论上,任何一个表达式都可以是子查询,例如
String limit_clause = "(SELECT numbertoshow FROM types WHERE id = (random() & 1)+1)";用于测试上述内容的完整 SQL 是:-
/*
DROP TABLE IF EXISTS basetable;
CREATE TABLE IF NOT EXISTS basetable (basename TEXT);
INSERT INTO basetable VALUES('test001');
INSERT INTO basetable VALUES('test002');
INSERT INTO basetable VALUES('test003');
INSERT INTO basetable VALUES('test004');
INSERT INTO basetable VALUES('test005');
INSERT INTO basetable VALUES('test006');
INSERT INTO basetable VALUES('test007');
INSERT INTO basetable VALUES('test008');
INSERT INTO basetable VALUES('test009');
INSERT INTO basetable VALUES('test010');
INSERT INTO basetable VALUES('test011');
INSERT INTO basetable VALUES('test012');
DROP TABLE IF EXISTS types;
CREATE TABLE IF NOT EXISTS types (id INTEGER PRIMARY KEY, typename TEXT, numbertoshow INTEGER);
INSERT INTO types VALUES(null,'type001',3);
INSERT INTO types VALUES(null,'type002',4);
*/
SELECT * FROM basetable LIMIT (SELECT numbertoshow FROM types WHERE id = (random() & 1)+1);
【讨论】: