Der as
erstellt einen Spaltenalias (in diesem Fall other_id
), und Sie können nicht mit einem Spaltenalias beitreten. Sie können einen Alias im ORDER BY
verwenden aber nirgendwo sonst, es sei denn, der Alias stammt von einer Unterabfrage.
Am besten wiederholen Sie hier das IF
Funktion im Join:
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