MySQL Left Join多条件关联异常求助:用户ID转用户名结果多为null
解决方案
你的问题出在JOIN条件上:原语句要求loggedby和updatedby必须同时等于同一个user.id才能匹配,这只有当创建人和更新人是同一用户时(比如job2)才会生效,其他情况都无法关联到用户数据,所以返回大量null。
要分别替换loggedby和updatedby的ID为对应用户名,需要两次关联user表,并给每个关联表设置别名区分:
SELECT job.number, job.Desc, u1.name AS loggedby, u2.name AS updatedby FROM job LEFT JOIN user u1 ON job.loggedby = u1.id LEFT JOIN user u2 ON job.updatedby = u2.id;
语句说明:
- 以
job表为主表,第一次关联user表(别名u1),匹配loggedby字段对应的用户名称 - 第二次关联
user表(别名u2),匹配updatedby字段对应的用户名称 - 通过
AS关键字将查询到的用户名重命名为loggedby和updatedby,与你期望的输出列名完全一致
执行以上语句后,就能得到你想要的结果:
| number | Desc | loggedby | updatedby |
|---|---|---|---|
| 1 | Job 1 | Two | One |
| 2 | Job 2 | Four | Four |
| 3 | Job 3 | One | Three |
| 4 | Job 4 | Three | One |
| 5 | Job 5 | One | Five |
内容的提问来源于stack exchange,提问作者fawzan
相关产品推荐
相关产品推荐

