У меня есть реализация One-to-One Chat с MySQL.
Цель - получить для одного пользователя все уникальные беседы с последним сообщением. Даже я использую MAX на первичном ключе и группирую по 2-му столбцу MySQL, отвергаю это.
Следующий запрос дает ошибку: Выражение № 2 списка SELECT отсутствует в предложении GROUP BY и содержит неагрегированный столбец «m.id», который функционально не зависит от столбцов в предложении GROUP BY;
Я использую MySQL версии 8.
Что мне здесь не хватает?
Таблица сообщений
id | member_a_id | member_a_status | member_b_id | member_b_status | conversation_id | content | created_dt
Таблица разговоров
id | member_a_id | member_a_status | member_b_id | member_b_status | conversation_id | content | created_dt | last_activity_dt
Запрос:
SELECT
MAX(m.id) AS msgid, m.*
FROM
message m
WHERE m.conversation_id IN
(SELECT
c.id
FROM
conversation c
WHERE (
c.member_a_id = 600
AND c.member_a_status NOT IN (0, 3)
)
OR (
c.member_b_id = 600
AND c.member_b_status NOT IN (0, 3)
))
GROUP BY m.conversation_id
ORDER BY m.id DESC;