Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLite左联接+分组依据+订单依据_Android_Sqlite_Join_Android Sqlite - Fatal编程技术网

Android SQLite左联接+分组依据+订单依据

Android SQLite左联接+分组依据+订单依据,android,sqlite,join,android-sqlite,Android,Sqlite,Join,Android Sqlite,我正在为Android应用程序使用SQLite 我有两张表:主题和消息。 我希望使用子查询将所有主题以及该主题的消息数和该主题的最后一条消息作为单个请求进行选择 我尝试了以下方法: SELECT topic.*, COUNT(message.id), message.* FROM topic LEFT JOIN (SELECT * FROM message ORDER BY message.ts DESC) AS message ON topic.id=message.topic_id GROU

我正在为Android应用程序使用SQLite

我有两张表:主题和消息。 我希望使用子查询将所有主题以及该主题的消息数和该主题的最后一条消息作为单个请求进行选择

我尝试了以下方法:

SELECT topic.*, COUNT(message.id), message.* FROM topic
LEFT JOIN (SELECT * FROM message ORDER BY message.ts DESC) AS message
ON topic.id=message.topic_id
GROUP BY topic.id;
当我在服务器端的MySQL上尝试时,这个查询工作得非常好。 但是,在使用SQLite的Android应用程序上,它并没有像预期的那样工作:我获得了所有主题和正确数量的消息,但最后一条消息不是最新的消息,似乎子查询中的ORDER BY没有任何用处

有什么提示吗

编辑: message.ts是不为NULL的文本,包含格式为yyyy MM dd HH:MM:ss.SSS的ts。
当我查询所有消息并按ts排序时,顺序是正确的。

当使用聚合时,确保返回组中特定行的唯一方法是:

SELECT topic.*,
       COUNT(*),
       message.*,
       MAX(message.ts)
FROM topic
LEFT JOIN message ON topic.id = message.topic_id
GROUP BY topic.id;