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

MySQL si unisce alle dichiarazioni dei casi

Non inserire in maiuscolo l'intero inner join, esegui il case solo sulla clausola "on" nel join. Questo dovrebbe funzionare (a meno che non abbia errori di battitura):

  SELECT 
    conversation.c_id,
    conversation.user_one,
    conversation.user_two,
    users.name,
    users.lastName
  FROM `conversation` 
  INNER JOIN `users`
  on
  users.id =
  CASE
    WHEN conversation.user_one = 1
    THEN conversation.two 
    WHEN conversation.user_two = 1
    THEN conversation.user_one   
 END
 WHERE `user_one` = 1 OR `user_two` = 1

Puoi anche ottenere un effetto simile unendo a sinistra su ciascuna di queste condizioni e quindi utilizzando l'istruzione case nella tua dichiarazione select per determinare da quale delle due tabelle visualizzare i record.