Android SQLite左联接+分组依据+订单依据
我正在为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
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;