在android sqlite中选择不同的值

在android sqlite中选择不同的值,android,sqlite,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(EVE

我尝试在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的不同类别吗?请告诉我,任何帮助都将不胜感激

您可以使用以下方法:


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

但您必须记住在
GROUPBY
中发送参数(
非空
发送)

您必须为
指定不同的列名

例如:

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);
真-不同的真

COLUMN\u NAME\u 2
将您拥有的内容命名为不同的列


这对我来说很好。

有多种方法,正如绿色标记的那样。但如果有人希望通过原始查询获得它,那么您可以:

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

column3
是一个独立的列

因此如何选择独立的类别,即选择整行的权利?只在
columns[]
中传递
category
,因为您只需要在结果中显示该列,如行查询所示,您将得到不同的类别。您应该尽可能避免使用
rawQuery
。。。始终首选内置的
SQLiteDatabase
查询方法,而不是
rawQuery
。EPIC WIN!先生,你真棒!我已经为这个问题找了好几个小时了,非常感谢你的意见。你真让我高兴。非常感谢!这就是我要找的。特别是处理contentprovider和cursorloader。我做了一个小黑客和这工作!是的,我也得说声谢谢。我在寻找和尝试很多建议,只有你的建议对我有用。谢谢分享。坚持下去。
String query = "SELECT DISTINCT(category) FROM event";
Cursor res=db.rawQuery("select column1 column2...  Distinct column3 from "+Table_name, null);