MySQL:where子句基于IF语句的结果?

时间:2020-06-12 13:57:52

标签: mysql sql

这是查询:

select IF ((t1.emp_id IS NOT NULL), t2.username, '') 
from t1, t2 
where t1.user_id = "285" AND t2.id = t1.emp_id

它可以正常工作,但是如果t1.emp_id 为NULL ,则由于这部分AND t2.id = t1.emp_id不会返回结果,但是这部分使我相信我会得到准确的{{1 }},如果t2.id 不为NULL 。有办法处理吗?

想法是如果t1.emp_id不为null,则根据关系 t1.emp_id = t2.id 返回t2.username,但在这种情况下,当 t1.emp_id < / strong>为null,由于查询的最后一部分,它不返回结果。如果我删除了最后一部分,它将不会返回t2的确切行。

2 个答案:

答案 0 :(得分:1)

我认为您想要一个LEFT JOIN。我最好的猜测是:

select coalesce(t2.username, '')
from t1 left join
     t2 
     on t2.id = t1.emp_id 
where t1.user_id = 285;

答案 1 :(得分:0)

使用以下查询,然后重试。

select t1.emp_id, t2.username
from t1, t2 
where t1.user_id = "285" AND t2.id = t1.emp_id AND t1.emp_id is NOT NULL;