Android sqlite注释工作中的分组依据

Android sqlite注释工作中的分组依据,android,android-sqlite,Android,Android Sqlite,我正在sql查询中使用GROUPBY 查询是: SELECT _id, message_type, message_type_id FROM msgs_list GROUP BY message_type_id 此查询没有执行分组依据的功能**它的功能类似于: SELECT _id, message_type, message_type_id FROM msgs_list 当我将数据库从设备下载到windows机器上时,同样的查询在windows机器上工作得非常好 观察结果: 预期结果: 有

我正在sql查询中使用GROUPBY

查询是:

SELECT _id, message_type, message_type_id FROM msgs_list GROUP BY message_type_id
此查询没有执行分组依据的功能**它的功能类似于:

SELECT _id, message_type, message_type_id FROM msgs_list
当我将数据库从设备下载到windows机器上时,同样的查询在windows机器上工作得非常好

观察结果:

预期结果:

有谁能提出可能的解决办法

谢谢,
Sha。

根据我的知识,GROUP BY子句可以与聚合函数或Having子句一起使用


根据我的知识,GROUP BY子句可以与聚合函数或Having子句一起使用


您使用了错误的语法,Group by的语法如下:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
在您的情况下,您没有使用任何聚合函数

例如:

SELECT Customer,OrderDate,SUM(OrderPrice) 
FROM Orders
GROUP BY Customer,OrderDate

您使用了错误的语法,Group by的语法如下:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
在您的情况下,您没有使用任何聚合函数

例如:

SELECT Customer,OrderDate,SUM(OrderPrice) 
FROM Orders
GROUP BY Customer,OrderDate

谢谢大家的支持

问题不在于SQL查询。问题在于我将其用作ExpandibleListView的适配器的CursorTreeAdapter

在适配器的getGroupCount方法中,我使用cursor.getCount更新了默认计数。现在它正在按预期工作

再次感谢你的建议

问候,,
Sha.

谢谢大家的支持

问题不在于SQL查询。问题在于我将其用作ExpandibleListView的适配器的CursorTreeAdapter

在适配器的getGroupCount方法中,我使用cursor.getCount更新了默认计数。现在它正在按预期工作

再次感谢你的建议

问候,,
Sha.

那么,实际结果是什么,预期结果是什么,输入数据是什么?很有可能它不是SQLite中的一个bug,它将预期的失败缩小到1。无效/意外查询,可能是过期的查询,或2。意外数据。@pst请检查更新的屏幕sots以获得更清晰的信息。在Android上如何执行查询?sqlite3在远程shell中还是在应用程序代码中?我很惊讶在执行该语句时没有出现警告/错误。。在任何情况下,我都很好奇为什么行为会因客户端而异。我正在应用程序代码中运行查询。为了验证查询,我在windows机器中使用了LITA。您能在远程shell中验证sqlite3的结果吗?只是为了确保它确实是应用程序中代码返回的内容。。我真的希望它能始终如一地工作,即使有人怀疑没有分组/非聚合列。那么,实际结果是什么,预期结果是什么,输入数据是什么?很有可能它不是SQLite中的一个bug,它将预期的失败缩小到1。无效/意外查询,可能是过期的查询,或2。意外数据。@pst请检查更新的屏幕sots以获得更清晰的信息。在Android上如何执行查询?sqlite3在远程shell中还是在应用程序代码中?我很惊讶在执行该语句时没有出现警告/错误。。在任何情况下,我都很好奇为什么行为会因客户端而异。我正在应用程序代码中运行查询。为了验证查询,我在windows机器中使用了LITA。您能在远程shell中验证sqlite3的结果吗?只是为了确保它确实是应用程序中代码返回的内容。。我真的希望它能始终如一地工作,即使有人怀疑它指的是没有分组/非聚合列。谢谢你的回答。我将使用聚合函数,并将告诉您结果。我尝试了上面提供的聚合。按COUNT*>0的消息类型从msgs列表组中选择_id、消息类型、消息类型、计数*,然后按消息类型从msgs列表组中选择_id、消息类型、消息类型、计数*。您希望实现什么?谢谢您的回答。我将使用聚合函数,并将告诉您结果。我尝试了上面提供的聚合。按COUNT*>0的消息类型从msgs列表组中选择_id、消息类型、消息类型、计数*,然后按消息类型从msgs列表组中选择_id、消息类型、消息类型、计数*,您希望实现什么?