我目前正在开发一个基于ajax的chatand我得到了一个名为conversation_list
的组件,其中包含所有可用聊天,其中包含以下信息:chat_partner_id
,chat_partner_type
(某种用户分类),chat_partner_name
和last_text_message
。我已获得以下查询以获取所有必需的信息:
SELECT message.chat_partner_id, message.chat_partner_type, message.message AS last_chat_message, IF(message.chat_partner_type = 'normal_user', normal_user.username, premium_user.username) AS chat_partner_name
FROM message, normal_user, premium_user
WHERE IF(message.chat_partner_type = 'normal_user', message.chat_partner_id = normal_user.id, message.chat_partner_id = premium_user.id)
AND message.chat_user_id = 123 AND message.user_type = 'premium_user'
GROUP BY chat_partner_name
ORDER BY message.message_date DESC
除了last_text_message之外,结果是正确的。结果未显示聊天的最后一条消息。我认为这是因为行正在ORDER BY
之前分组。
有没有办法显示没有复杂的连接和子选择的最后一条消息?我已经尝试在MAX()
上使用last_text_message
但没有成功。