sql >> Database >  >> RDS >> Mysql

Onbekende kolomfout krijgen bij gebruik van 'as' in mysql-statement

De as maakt een kolomalias aan (in dit geval other_id ), en u kunt niet deelnemen op een kolomalias. U kunt een alias gebruiken in de ORDER BY maar nergens anders, tenzij de alias uit een subquery komt.

Je beste optie hier zou zijn om de IF . te herhalen functie in de 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



  1. Moet ik NULL of een lege tekenreeks gebruiken om geen gegevens in de tabelkolom weer te geven?

  2. Illegale mix van sorteringen voor operatie 'concat'

  3. Maken als een item niet bestaat, anders bijwerken?

  4. Een API aanroepen vanuit de opgeslagen procedure van SQL Server