私はこの SQL (SQLite データベース) を持っています。これは、メッセージが「none」以外の会話 ID を持つ conversation_id でグループ化されたメッセージ テーブルから最新のメッセージを正しく取得します。
SELECT * from messages 
WHERE _id
IN ( 
   SELECT MAX(_id)
   FROM messages
   WHERE conversation_id != 'none'
   GROUP BY conversation_id
   ) 
ただし、会話テーブルの「見えない返信」列 (この会話の見えない返信の数を含む) を使用して、出てくるメッセージを並べ替えたいと思います。
私はこれを試しました:
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」句の近くで構文エラーが発生します。
説明として、'conversation id' は会話テーブルの主キーではなく、識別子の文字列です。
どうすればこれを修正できますか? JOIN を使用した私のアプローチは間違っていますか?