【问题标题】:How to use a case statement to determine which field to left join on如何使用 case 语句来确定要离开连接的字段
【发布时间】:2011-09-29 15:37:27
【问题描述】:

我有一个查询需要能够在正确的位置左连接一个字段,条件是该字段等于一个变量。

类似:

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

我认为我在正确的轨道上,但我不确定如何将查询放在一起。 谢谢

【问题讨论】:

    标签: mysql left-join case


    【解决方案1】:

    这样的事情可能会奏效

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

    【讨论】:

      【解决方案2】:

      看来你想要这个:

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

      可以简化为:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多