我正在使用 Postgres 作为聊天应用程序。我有两张表,一张包含对话 ID 和参与者,另一张表包含消息。
我正在运行以下查询来获取用户的所有对话,并使用横向联接在结果中包含最后一条消息:
select c.id, c.title, c.members, max(m.created_at) delivered_at, last_message
from conversations c
join messages m on c.id = m.conversation_id
left join lateral (select message from messages m where c.id = m.conversation_id order by created_at desc limit 1) last_message on true
where array[4] <@ c.members
group by c.id, last_message
order by delivered_at desc
Run Code Online (Sandbox Code Playgroud)
这有效,但消息返回为(message)而不是message
我真的不知道为什么。有什么我可以做的,这样我就不必替换括号作为额外的步骤?