Mysql
 sql >> Base de données >  >> RDS >> Mysql

Obtention d'une erreur de colonne inconnue lors de l'utilisation de 'as' dans l'instruction mysql

Le as crée un alias de colonne (dans ce cas other_id ), et vous ne pouvez pas joindre sur un alias de colonne. Vous pouvez utiliser un alias dans le ORDER BY mais nulle part ailleurs, sauf si l'alias provient d'une sous-requête.

Votre meilleure option ici serait de répéter le IF fonction dans la jointure :

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