查询中的MySQL if-else语句

查询中的MySQL if-else语句,mysql,sql,Mysql,Sql,我有一个内部查询,它选择所有链接到giver用户的附属机构 (SELECT `realtor_user_id` FROM `affiliate_assignments` WHERE `lender_user_id` = `users`.`id`) 附属机构分配结构为: id |房地产经纪人|用户|贷款人|用户| id 其中,users表在外部查询中加入,realtor\u user\u id和lender\u user\u id都是users.id的外键 我还有用户的

我有一个内部查询,它选择所有链接到giver用户的附属机构

 (SELECT 
    `realtor_user_id`
 FROM
    `affiliate_assignments`
 WHERE
 `lender_user_id` = `users`.`id`)
附属机构分配
结构为:

id |房地产经纪人|用户|贷款人|用户| id

其中,
users
表在外部查询中加入,
realtor\u user\u id
lender\u user\u id
都是
users.id的外键

我还有用户的
角色
(在外部查询中选择),可以是
房地产经纪人
贷款人

我需要的是:

IF role = 'lender'

 SELECT realtor_user_id 
 FROM affiliate_assignments
 WHERE lender_user_id = users.id

ELSE IF role = 'realtor'

 SELECT lender_user_id
 FROM affiliate_assignments
 WHERE realtor_user_id = users.id

END IF

如何实现这一点?

您可以在

    select case when role = 'lender' then realtor_user_id 
                when role = 'realtor'  then lender_user_id 
            end  as my_result 
    FROM affiliate_assignments
    WHERE lender_user_id = users.id
事实上你有不同的where条件吗?你可以使用复合条件is when子句重新构建你的条件

select  case  
            when role = 'lender'  AND lender_user_id = users.id  then realtor_user_id 
            when  role = 'realtor' AND realtor_user_id = users.id then lender_user_id
                  ELSE  your_result_for else 
FROM affiliate_assignments
使用case语句:

SELECT CASE
    WHEN role = 'lender' THEN realtor_user_id
    WHEN role = 'realtor' THEN lender_user_id
    END CASE 
FROM affiliate_assignments
WHERE realtor_user_id = users.id

一种方法是使用
left join
s:

select u.*,
       coalesce(aal.realtor_user_id, aar.lender_user_id) as other_user_id
from users u left join
     affiliate_assignments aal
     on u.id = aal.lender_user_id and u.role = 'lender' left join
     affiliate_assignments aar
     on u.id = aar.realtor_user_id and u.role = 'realtor';

用例代替IF。这绝对不是一个重复的问题,只是说答案是
case
。阅读问题。它涉及多个不同的列和相关性。where子句中不需要一个案例?OP的伪代码在第一个选择中有
where lender\u user\u id=users.id
,在第二个选择中有
where realtor\u user\u id=users.id
。是的,where子句呢?