mysql - 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.id
t1.emp_id
想法是如果t1.emp_id
不为空,则根据关系t1.emp_id = t2.id返回 t2.username但在这种情况下,当t1.emp_id为空时,由于查询的最后一部分,它不会返回结果。如果我删除最后一部分,它不会从 t2 返回确切的行。
解决方案
我想你想要一个LEFT JOIN
. 我最好的猜测是:
select coalesce(t2.username, '')
from t1 left join
t2
on t2.id = t1.emp_id
where t1.user_id = 285;
推荐阅读
- spring - 如何使 Spring API 成为可通过 Internet 访问的公共 Web 服务?
- google-sheets - =根据单元格引用从另一个工作表中提取数据的查询功能
- android - 使用 Vulkan 从 Android Camera2 硬件缓冲区进行采样 - 图像格式问题
- javascript - 选择下拉选项后保持覆盖
- c# - 无法在控制台应用程序 .NET Core 中使用 IOptions
- javascript - 以与另一个数组相同的顺序对数组进行排序,如果不匹配,则添加到最后一个
- python - 无法读取 instance.png,因为文件丢失、权限不正确、格式不受支持或无效
- python - 参考 Python 字典主题:为相同的输入获取不同的输出
- r - 如何将以下列表输出转换为 R 中的数据框?
- php - 尝试在 bool laravel 8 上读取属性“名称”,变量未传输到视图