首页 > 解决方案 > MySQL:Where 子句基于 IF 语句的结果?

问题描述

这是查询:

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它不会因为这部分返回结果,但是这部分让我知道如果不是 NULLAND t2.id = t1.emp_id我会得到准确的结果。有没有办法处理它?t2.idt1.emp_id

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

标签: mysqlsql

解决方案


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

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

推荐阅读