即使我将distinct设置为true,我的游标也返回了两次记录:
return myDataBase。查询(true,DB_TABLE,new String[]{“rowid as _id”,KEY_CONDITIONS},builder.toString(),symptoms,null,null;
仅供参考,
public Cursor getData(String[] symptoms) {
String where = KEY_SYMPTOMS + "= ?";
String orStr = " OR ";
StringBuilder builder = new StringBuilder(where);
for(int i = 1; i < symptoms.length; i++)
builder.append(orStr).append(where);
return myDataBase.query(true, DB_TABLE, new String[]
{"rowid as _id", KEY_CONDITIONS}, builder.toString(), symptoms, null, null, null, null);
}
或者我试着换成rawQuery
return myDataBase.rawQuery("SELECT DISTINCT " + KEY_CONDITIONS + " FROM "
+ DB_TABLE + " " + builder.toString() + symptoms.toString(), null);
我的日志说:
03-02 22:57:02.634: E/AndroidRuntime(333): FATAL EXCEPTION: main
03-02 22:57:02.634: E/AndroidRuntime(333): android.database.sqlite.SQLiteException: near "=": syntax error: , while compiling: SELECT DISTINCT conditions FROM tblSymptoms symptoms= ? OR symptoms= ?[Ljava.lang.String;@405550f8
请帮我确定这里似乎缺少什么。任何帮助都是真的非常感谢。
你有两个常规选项二做这个任务使用行查询**和**使用 DISTINCT 关键字
对于使用行查询,您可以直接使用mr的函数。山姆和使用 DISTINCT 关键字,你可以使用
public Cursor query (boolean distinct, String table, String[] columns,
String selection, String[] selectionArgs, String groupBy,
String having, String orderBy, String limit)
因为查询斯图彻正在重新调整
这个:
query(false, table, columns, selection, selectionArgs, groupBy,
having, orderBy, null /* limit */);
在此代码中,第一个参数用于< code>DISTINCT,因此将其作为< code>true提供。因此,您的< code >查询会像这样
Cursor cursor = db.query(true, YOUR_TABLE_NAME, new String[] { COLUMN1 ,COLUMN2, COLUMN_NAME_3 }, null, null, COLUMN2, null, null, null);
基本上,DISTINCT关键字只返回一次列名,如果它出现超过一次。
解决方案
您需要DISTINCT
条件,但Android需要_id
列,这是一个问题,因为您无法混合和匹配: <罢工> SELECT_id,DISTINCT条件…
。但是,您可以改用GROUP BY
子句:
return myDataBase.query(DB_TABLE, new String[] {"rowid as _id", KEY_CONDITIONS},
builder.toString(), symptoms, KEY_CONDITIONS, null, null);
解释
此查询:
return myDataBase.rawQuery("SELECT DISTINCT " + KEY_CONDITIONS + " FROM "
+ DB_TABLE + " " + builder.toString() + symptoms.toString(), null);
失败,因为您在错误的参数中传递了< code>String[] symptoms,请尝试:
return myDataBase.rawQuery("SELECT DISTINCT " + KEY_CONDITIONS + " FROM "
+ DB_TABLE + " " + builder.toString(), symptoms);
此查询:
return myDataBase.query(true, DB_TABLE, new String[] {"rowid as _id", KEY_CONDITIONS}, builder.toString(), symptoms, null, null, null, null);
失败,因为DISTINCT正在查看id列和条件列。它相当于:SELECT DISTINCT(_id,conditions)…
显然,您只需要不同的条件。。。
我怀疑这可能是我包含的一个库,它正在扰乱我的日志。这有可能吗?librray可以改变我的日志显示方式吗?既然我有点迷路了,我该怎么调查呢?
我有3节课。MainActivity,OneFragment,TwoFragment,我在OneFragment上使用Sqlite填充了listview,并且我从TwoFragment中添加了记录(使用我的SqlHelper类使用的CreateData函数),但是新记录没有显示在listview中。 我该怎么解决这个? 如果你想看我可以上传的代码。
问题内容: 所以我有这张表 现在,如果我查询 我期待类似的东西 是否有可能 ? PS:C行中的内容仅表示该列为空。 问题答案: 您可以创建一个嵌套表架构对象类型: 然后按以下方式构造查询: 例子: 结果:
显示特定的通话记录 可显示指定的通话记录。选择通话记录后按下按钮,并选择选项选单的[依种类排列记录]。 通话记录可从以下项目中选择。 所有通话记录 显示通话记录。 XX件未处理事项 显示前次确认后发生的记录。 没有其他记录时,会显示[暂无任何未处理事项]。 语音消息 显示语音消息。 未接来电 显示未接来电记录。 已接来电 显示已接来电记录。 已拨电话 显示已拨电话记录。 提示 亦可于显示通
我试图显示一个随机记录从我的表,但没有运气,这是我一直以来。这是用PHP编写的 想知道这是否是一个明显的错误吗?我已经连接到数据库了。 JB的
问题内容: 嗨,我在下面的表格中记录了活动和分数 我需要从活动中返回所有记录 退货 然后我需要基于来自点表的用户ID对用户点求和 退货 一切都很好,但我需要将它们放在一起给用户,即 有指针吗? 问题答案: 使用外部联接: 或子查询: