Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Obtendo erro de coluna desconhecido ao usar 'as' na instrução mysql


O as cria um alias de coluna (neste caso other_id ), e você não pode ingressar em um alias de coluna. Você pode usar um alias no ORDER BY mas em nenhum outro lugar, a menos que o alias venha de uma subconsulta.

Sua melhor opção aqui seria repetir o IF função na junção:
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