2013-02-15 45 views
0

以下代码提供了数据库中的所有值甚至是重复值。如何从sql数据库获取唯一值

return database.query("contacts", new String[] {"_id", "name"}, 
    null, null, null, null, "name"); 

我怎样才能获得从上面的代码不同的值

+0

您应该使用'rawQuery'而不是'query'并使用带有'DISTINCT'关键字的实际SQL查询来执行此操作。另请参见[此处类似的问题](http://stackoverflow.com/questions/3489280/android-database-query)。 – 2013-02-15 11:45:43

+1

@JohnWillemse:为什么不使用Stefan's或我的答案指出的'query'的重载? – 2013-02-15 11:50:22

回答

1

使用采用一个布尔作为第一参数的overload of query和从选择删除_id柱:

return database.query(true, "contacts", new String[] {"name"}, 
         null, null, null, null, "name", null); 

_id列是应该是独一无二的,因此将它包括在你的查询中会导致截然不同的效果。

+0

同样的问题danial! 它当然也会返回重复行 – Hafiz 2013-02-15 12:22:40

+1

。如果您选择了主键“_id”,也是如此。 _id总是独一无二的... – 2013-02-15 12:33:55

0

使用此查询:

public Cursor query (boolean distinct, String table, 
       String[] columns, String selection, 
       String[] selectionArgs, String groupBy, 
       String having, String orderBy, String limit) 

设置的第一个参数为true,并且不使用在选择的youre primarey关键。它将永远是唯一的...

1

使用不同的关键字,这将从数据库返回唯一的记录。

db.rawQuery("Select DISTINCT from table_name",null);