1

如何从数据库表中可能重复某些值的列中为 AutoCompleteTextView 提供建议?

http://www.outofwhatbox.com/blog/2010/11/android-autocompletetextview-sqlite-and-dependent-fields/

http://www.outofwhatbox.com/blog/2010/11/android-simpler-autocompletetextview-with-simplecursoradapter/

在学习如何使用 AutoCompleteTextView 的过程中,我偶然发现了上面两篇博客文章。这些非常适合介绍,但并不能完全解决我的问题。我想提供数据库中列的不同值作为我的应用程序中 AutoCompleteTextView 的建议。当我实现上述两个示例中的代码时,我在列表中得到了重复的建议。尝试DISTINCT在我的查询中使用关键字不起作用,因为在返回的结果中CursorAdapter需要一个_id字段。由于每一行都有自己的_id,因此不会消除重复的值。

我正在考虑为这些值创建一个单独的查找表。这具有标准化我的数据以及提供对不同值的轻松访问以建议条目的好处。对于我的一个 AutoCompleteTextViews,我认为这会很好,因为很可能只有 4 或 5 个不同的值会被使用。另一方面,它可能效果不佳,因为我不确定大型数据集中会有多少不同的值。

4

3 回答 3

2

如果你有一张桌子:

CREATE TABLE Foo(_id INTEGER PRIMARY KEY, bar TEXT);

并且只想为您可以使用_id的每个不同选择一个:bar

SELECT _id, bar FROM Foo GROUP BY bar;
于 2012-11-30T22:27:05.730 回答
2

当您执行 sqlite 选择查询时尝试使用 GROUP BY...并按列名分组...即

 SELECT keyword FROM mytable GROUP BY keyword
于 2012-11-30T22:27:57.213 回答
0

我希望这不是过度杀戮,但为什么不尝试子查询呢?

select _id, bar 
from Foo 
where bar in (
    select distinct bar
    from Foo
);

内部查询将返回“bar”中的所有不同值,然后外部查询将所有这些值与相应的“_id”匹配。

于 2012-12-01T00:03:18.960 回答