LEFT JOIN返回null

时间:2017-12-09 06:22:55

标签: mysql left-join

我关注了2 tablesusersuserRoles,其中包含以下records

userId  userName  firstName  lastName  password  image userRoles_roleId
........................................................................
1       a@a.dk    A          A         1                1
2       b@b.dk    B          B         2                2


roleId  userRole
.................
1       admin
2       user

通过以下查询,我得到的是:

SELECT users.userId, users.userName, users.firstName
     , users.lastName, users.password, users.image
     , userRoles.userRole FROM users 
LEFT JOIN userRoles ON users.userID = userRoles.roleId;

userId  userName  firstName  lastName  password image  userRole
................................................................
1       a@a.dk    A          A            1            NULL
2       b@b.d     B          B            2            NULL

当然,我希望得到的是adminuser

我不清楚它应该做什么LEFT JOIN或错误?

1 个答案:

答案 0 :(得分:2)

left [outer] join将允许来自"右边的一行"即使在" left"中没有匹配的行,也要显示该表表。但是,如果您没有为加入选择正确的列,那么您将无法获得良好的结果。在users表中有一个foreign key列,该列的名称表示它与哪个表相关。该列为userRoles_roleId,因此您需要将查询更改为:

SELECT users.userId, users.userName, users.firstName
     , users.lastName, users.password, users.image
     , userRoles.userRole 
FROM users 
LEFT JOIN userRoles ON users.userRoles_roleId = userRoles.roleId;