as
създава псевдоним на колона (в този случай other_id
), и не можете да се присъедините към псевдоним на колона. Можете да използвате псевдоним в ORDER BY
но никъде другаде, освен ако псевдонимът не идва от подзаявка.
Най-добрият ви вариант тук би бил да повторите IF
функция в съединението:
SELECT
a.id,
a.from member_id,
a.to member_id,
IF(a.from member_id=1, a.to member_id, a.from member_id) as other_id,
a.text,
MAX(a.date sent) as date sent
FROM message a
JOIN members m on IF(a.from member_id=1, a.to member_id, a.from member_id) = m.id
WHERE (a.from member_id=1 OR a.to member_id=1) AND a.active=1
GROUP BY other_id
ORDER BY other_id DESC, date sent DESC