Mysql
 sql >> Database >  >> RDS >> Mysql

Ottenere un errore di colonna sconosciuto quando si utilizza "as" nell'istruzione mysql

Il as crea un alias di colonna (in questo caso other_id ) e non puoi unirti a un alias di colonna. Puoi utilizzare un alias in ORDER BY ma da nessun'altra parte, a meno che l'alias non provenga da una sottoquery.

La tua migliore opzione qui sarebbe quella di ripetere IF funzione nel 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