【问题标题】:select distinct value in android sqlite在android sqlite中选择不同的值
【发布时间】:2012-06-27 04:22:31
【问题描述】:

我尝试在 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,任何帮助将不胜感激!

【问题讨论】:

  • 你应该尽可能避免使用rawQuery...总是更喜欢内置的SQLiteDatabase查询方法而不是rawQuery

标签: android sqlite


【解决方案1】:

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

您必须为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 - name 列你有什么是 DISTINCT。

这对我来说很好。

【讨论】:

  • 史诗般的胜利!你先生,太棒了!我一直在寻找这个问题的几个小时,非常感谢您的意见。你真的让我很开心。
  • 非常感谢!这就是我要找的。专门处理 contentprovider 和 cursorloader。我做了一个小技巧,这很有效!
  • 是的,也不得不说声谢谢。正在搜索并尝试许多建议,只有你的对我有用。谢谢你的分享。坚持下去。
【解决方案2】:

你可以使用this方法:

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

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

【讨论】:

  • 那么如何选择不同的类别,即选择整行对吗?
  • 只在columns[] 中传递category,因为您只需要结果中的那一列,如行查询所示,您将获得不同的类别。
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:
    Cursor res=db.rawQuery("select column1 column2...  Distinct column3 from "+Table_name, null);
    

    column3 是一个不同的列

    【讨论】:

      猜你喜欢
      • 2020-01-03
      • 1970-01-01
      • 2021-03-25
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多