データベースから会話のリストを取得しようとしていますが、最新のメッセージを表示したいのですが。私はそれを行うことができる(そしてN + 1ではない)クエリを見つけるのが難しいです。関連集約列に基づいて、グループの非集約列を選択してください。
私は、これらのテーブルがあります。
chats(id, user_id, post_id, created_at)
messages(id, user_id, chat_id, body, created_at)
を私は心の中でこのようなクエリた:
select chats.id, chats.user_id, m.latest from chats
inner join (
select chat_id, max(created_at) as latest from messages
group by chat_id
) as m on m.chat_id = chats.id;
をしかし、私はmax(created_at)
結果に対応する行からメッセージボディを追加したいです。そのような関連する列を取得することは可能ですか?
これは私の使用には完璧です、ありがとう –