我想创建一个Cursor
,稍后我会通过CursorAdapter
到AutoCompleteTextView
获取自动完成建议。问题是我的SQL语句需要从同一个表中选择2个不同的结果集,只是按不同的标准排序。同时这些结果集不能重叠 - 否则我会有多个相同的建议。在MySQL上,这将是很容易的:Android上的SQLite:带限制的替代
(SELECT field3 FROM table ORDER BY field1 ASC LIMIT 5)
UNION
(SELECT field3 FROM table ORDER BY field2 DESC LIMIT 10)
LIMIT 10
在这种情况下,我总是会有最多10个唯一值。在SQLite,不幸的是,这不是这种情况 - 我不能限制特定的选择,只是在整个结果集,这使得UNION没有用于这种情况...
要解决这个问题,我们考虑了分别进行2个查询:从第一个查询开始遍历Cursor
并将值放入Array
,然后从第二个查询遍历Cursor
,并将值放入同一个数组中,同时检查并跳过Array
中已有的值以避免重复。然后使用ArrayAdapter
将值传递给AutoCompleteTextView
。
理论上这会工作 - 但我不喜欢,一切都变得更复杂,更写代码来解决这样一个简单的任务...
也许有更好的和更容易的方式来做到它?
好主意!但是,似乎SQLite也不允许在多选语句中使用'ORDER BY':'SQL错误:ORDER BY子句应该在UNION之前出现' – Laimoncijus 2010-07-26 21:50:07