2013-02-15 575 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);