在android sqlite中select不同的值

我尝试在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) 

任何人都可以告诉我如何使用查询()而不是原始查询select不同的类别,任何帮助将不胜感激!

  • 确保Android上的SQLite使用UTF-8作为字符集
  • 如何在Android上的SQLite中转义不受支持的字符?
  • Android 2.1和2.2之间的SQLite差异
  • 为什么ContentValues有一个支持Boolean的put方法?
  • Android sqlite - 选择字段为null或空的记录
  • 活动之间共享的Android SQLite数据库
  • 如何以及在何处将sqlite(.db)文件添加到android项目中
  • 如何清理/删除greenDao数据库
  • 你可以使用这个方法:

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

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

    但是你必须记得在GROUPBY发送参数( NOT NULL send)。

    您必须提供不同的列名称。

    例:

     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_NAME_2 – 名称列你已经DISTINCT。

    这对我很好。

    有多种方式,因为已经打了绿。 但是,如果有人正在通过原始查询来获得它,那么你去:

     String query = "SELECT DISTINCT(category) FROM event"; 
     Cursor res=db.rawQuery("select column1 column2... Distinct column3 from "+Table_name, null); 

    column3是一个不同的列