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

后端 未结 2 1879
独厮守ぢ
独厮守ぢ 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:00

    Something like this may work

    LEFT JOIN challengesRead 
    ON challenges.userID = CASE 
    WHEN challenges.userID = $var THEN challengesRead.userID 
    WHEN challenges.opponentID = $var THEN challenges.opponen END
    
    0 讨论(0)
  • 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
          )
    
    0 讨论(0)
提交回复
热议问题