37

我尝试在android中运行以下原始查询,它似乎不起作用

String query ="SELECT DISTINCT category FROM event";
Cursor  cursor = mDb.rawQuery(query, null);
if (cursor != null) {
     cursor.moveToFirst();
}
return cursor; 

所以我决定在 android 中使用 query() 方法,类似于

Cursor mCursor = mDb.query(EVENT_TABLE, new String[] {KEY_ROWID, KEY_CAT}, null, null,null,null, null)

谁能告诉我如何选择使用 query() 而不是 rawquery 的不同类别,任何帮助将不胜感激!

4

4 回答 4

63

但是你必须记住在GROUPBY( NOT NULLsend) 中发送参数。

您必须为 提供列名distinct

例子:

Cursor cursor = db.query(true, YOUR_TABLE_NAME, new String[] { COLUMN_NAME_1 ,COLUMN_NAME_2, COLUMN_NAME_3 }, null, null, COLUMN_NAME_2, null, null, null);

true - 不同的 TRUE

COLUMN_NAME_2- 名称列你有什么是不同的。

这对我来说很好。

于 2012-12-14T13:17:09.873 回答
50

您可以使用方法:

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

这里第一个参数指定是否使用 distinct。

于 2012-06-27T04:27:35.707 回答
7

有多种方法,正如已经打勾的绿色。但是,如果有人希望通过原始查询来获取它,那么您可以这样做:

String query = "SELECT DISTINCT(category) FROM event";
于 2015-12-15T15:40:51.260 回答
4
Cursor res=db.rawQuery("select column1 column2...  Distinct column3 from "+Table_name, null);

column3是一个不同的列

于 2016-02-26T21:10:15.513 回答