How to use a case statement to determine which field to left join on

后端 未结 2 1895
独厮守ぢ
独厮守ぢ 2021-01-05 12:31

I have a query that needs to be able to left join a field at the right place given the condition that the field is equal to a variable.

Something like:



        
2条回答
  •  死守一世寂寞
    2021-01-05 13:22

    It seems you want this:

    LEFT JOIN challengesRead 
      ON CASE WHEN challenges.userID = $var
                THEN challenges.userID 
              WHEN challenges.opponentID = $var
                THEN challenges.opponentID
         END = challengesRead.userID
    

    which can be simplified to:

    LEFT JOIN challengesRead 
      ON $var = challengesRead.userID
      AND ( challenges.userID = $var
         OR challenges.opponentID = $var
          )
    

提交回复
热议问题