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