mysql:where子句基于if语句的结果?

svujldwt  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(278)

以下是查询:

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 如果为空,则不会因为此部分而返回结果 AND t2.id = t1.emp_id 但这一部分让我确信 t2.id 如果 t1.emp_id 不为空。有办法处理吗?
这个想法是如果 t1.emp_id 则返回t2.username,基于关系t1.emp\u id=t2.id,但在本例中,当t1.emp\u id为null时,由于查询的最后一部分,它不会返回结果。如果我删除最后一部分,它将不会返回t2的确切行。

jfgube3f

jfgube3f1#

我想你想要一个 LEFT JOIN . 我最好的猜测是:

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

zkure5ic2#

使用以下查询并重试。

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;

相关问题