在android sqlite中选择不同的值

smi*_*ith 32 sqlite android

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

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

所以我决定在android中使用query()方法

Cursor mCursor = mDb.query(EVENT_TABLE, new String[] {KEY_ROWID, KEY_CAT}, null, null,null,null, null)
Run Code Online (Sandbox Code Playgroud)

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

Ada*_*ski 61

但你必须记得发送参数GROUPBY(NOT 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);
Run Code Online (Sandbox Code Playgroud)

true - 不同的TRUE

COLUMN_NAME_2 - 命名列你所拥有的DISTINCT.

这对我很有用.

  • 大胜 !你先生,太棒了!我一直在寻找这个问题的好几个小时,非常感谢您的投入.你真的很开心. (6认同)

Har*_*Joy 47

您可以使用方法:

public Cursor query (boolean distinct, String table, 
                     String[] columns, String selection, 
                     String[] selectionArgs, String groupBy, 
                     String having, String orderBy, String limit)
Run Code Online (Sandbox Code Playgroud)

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

  • 在`columns []`中只传递`category`,因为你只需要在行查询中显示结果中的那一列,你将得到不同的类别. (2认同)

Pav*_*apu 6

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

String query = "SELECT DISTINCT(category) FROM event";
Run Code Online (Sandbox Code Playgroud)