我有这个 SQL(SQLite 数据库),它正确地从按会话 ID 分组的消息表中获取最新消息,其中消息的会话 ID 不是“无”。
SELECT * from messages
WHERE _id
IN (
SELECT MAX(_id)
FROM messages
WHERE conversation_id != 'none'
GROUP BY conversation_id
)
但是,我想使用对话表中的“unseenreplies”列(其中包含此对话的未见回复的数量)来对发出的消息进行排序。
我试过这个:
SELECT * from messages
WHERE _id IN
(
SELECT max(_id) from messages m
JOIN conversations c
ON m.conversation_id = c.cid ORDER BY
c.unseenreplies DESC
where m.conversation_id != 'none' group by m.conversation_id )
但是在“where”子句附近出现语法错误。
只是作为解释,“对话 ID”不是对话表的主键,而是一个标识符字符串。
我怎样才能解决这个问题?我的 JOIN 方法是否可行?