如何使用另一个表的计数更新表的字段? SQLite,Java,安卓

Posted

技术标签:

【中文标题】如何使用另一个表的计数更新表的字段? SQLite,Java,安卓【英文标题】:How do I update the field of a table with the count of another table? SQLite, Java, Android 【发布时间】:2011-03-30 03:01:15 【问题描述】:

在 UPDATE 之后,我在“'D”下得到一个“无效字符常量”。有任何想法吗? 原文:

公共游标fetchAllJournals(字符串排序) mDb.rawQuery(更新'DATABASE_JOURNAL_TABLE' 设置'KEY_JOURNAL_NOTES' = (从“DATABASE_HOMES_TABLE”中选择计数(*) WHERE 'DATABASE_JOURNAL_TABLE'.'KEY_JROWID' = 'DATABASE_HOMES_TABLE'.'KEY_HOME_JOURNALID') ) 返回 mDb.query(DATABASE_JOURNAL_TABLE, new String[] KEY_JROWID, KEY_JOURNAL_TITLE, KEY_JOURNAL_NOTES, KEY_JDATE,null , null, null, null, sort ,null);

回答:

公共游标fetchAllJournals(字符串排序) mDb.execSQL("UPDATE "+DATABASE_JOURNAL_TABLE+" SET "+KEY_JOURNAL_NOTES+" " + " = (SELECT COUNT(*) FROM "+DATABASE_HOMES_TABLE+" WHERE " +DATABASE_JOURNAL_TABLE+"."+KEY_JROWID+" = "+DATABASE_HOMES_TABLE +"." + KEY_HOME_JOURNALID+")"); 返回 mDb.query(DATABASE_JOURNAL_TABLE, new String[] KEY_JROWID, KEY_JOURNAL_TITLE, KEY_JOURNAL_NOTES, KEY_JDATE,null , null, null, null, sort ,null);

【问题讨论】:

【参考方案1】:

这种情况下的无效字符常量是“DATABASE_JOURNAL_TABLE”。 Java中的单引号定义了一个字符常量,即一个字符,例如'a' 或 'b' 或 '!'。 'DATABASE_JOURNAL_TABLE' 是其中的一个字符串,因此您必须使用字符串文字和双引号,即 "prefix "+DATABASE_JOURNAL_TABLE+" suffix"。

试试这个:

public Cursor fetchAllJournals(String sort) 

mDb.rawQuery("UPDATE "+DATABASE_JOURNAL_TABLE+" SET "+KEY_JOURNAL_NOTES+" = (SELECT COUNT(*) FROM "+DATABASE_HOMES_TABLE+"WHERE "+DATABASE_JOURNAL_TABLE+"."+KEY_JROWID+" =+"DATABASE_HOMES_TABLE"+."+KEY_HOME_JOURNALID+")");

return mDb.query(DATABASE_JOURNAL_TABLE, new String[] KEY_JROWID, KEY_JOURNAL_TITLE, KEY_JOURNAL_NOTES, KEY_JDATE,null , null, null, null, sort ,null);

【讨论】:

我认为这很接近,我将 rawQuery 更改为 execSQL 和一些格式错误。我现在有一个 SQLite 异常。我已经更新了上面的代码。 您在查询中缺少结束语 )。标记选择查询结束的结束 )。 就是这样。谢谢您的帮助。非常感谢。

以上是关于如何使用另一个表的计数更新表的字段? SQLite,Java,安卓的主要内容,如果未能解决你的问题,请参考以下文章

如何从一个表中获取包含另一表的详细信息的记录计数

如何更新作为 MySQL 中另一个表的聚合结果的字段?

SQL:根据另一个表的计数结果更新一个表中的列

db2如何实现用一张表的某个字段更新另一张表的相应字段。

更新一个表的字段值等于另一个表的字段值的SQL语句

mysql如何更新一个表中的某个字段值等于另一个表的某个字段值