?
THEN sender.id
ELSE receiver.id
END interlocutor,
CASE WHEN m.to_id = ?
THEN sender.name
ELSE receiver.name
END username,
sender.id msg_sender_id,
m.text msg_text
FROM messages m
JOIN users sender ON
sender.id = m.from_id
JOIN users receiver ON
receiver.id = m.to_id
WHERE m.to_id = ? OR m.from_id = ?
GROUP BY interlocutor
HAVING m.id = max(m.id)
ORDER BY m.id DESC
Ну и он явно неправильный. Т.е. в select list есть много чего без агрегации, чего нет в GROUP BY (да и в HAVING, и в ORDER BY).
Обсуждают сегодня