我尝试在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的不同类别,任何帮助将不胜感激!
答案 0 :(得分:59)
但是你必须记得在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);
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
是一个独特的列