【发布时间】:2011-03-21 06:49:11
【问题描述】:
我想创建一个Cursor,稍后我将通过CursorAdapter 传递给AutoCompleteTextView 以获得自动完成建议。问题是我的 SQL 语句需要从同一张表中选择 2 个不同的结果集,只是按不同的标准排序。同时,这些结果集不能重叠——否则我会有多个相同的建议。在 MySQL 上,这很容易:
(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。
理论上这是可行的——但我不喜欢的是一切都变得更加复杂,并且要编写更多代码来解决如此简单的任务......
有没有更好更简单的方法?
【问题讨论】:
标签: android arrays sqlite cursor union