在android sqlite中选择不同的值

时间:2012-06-27 04:22:32

标签: android sqlite

我尝试在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 个答案:

答案 0 :(得分:59)

但是你必须记得在GROUPBYNOT NULL发送)中发送参数。

您必须为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 - distinct TRUE

COLUMN_NAME_2 - 将您所拥有的名称列为DISTINCT。

这对我很有用。

答案 1 :(得分:47)

您可以使用this方法:

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

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

答案 2 :(得分:5)

有多种方式,因为绿色已经勾选。但如果有人想通过原始查询来获取它,那么你可以去:

String query = "SELECT DISTINCT(category) FROM event";

答案 3 :(得分:3)

Cursor res=db.rawQuery("select column1 column2...  Distinct column3 from "+Table_name, null);

column3是一个独特的列