这是查询:
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的确切行。
答案 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;