首页 > 解决方案 > 为什么我的 SQL Left Join 不起作用?

问题描述

我正在尝试执行基本的左连接。表的结构是:

AGR_USERS : 用户 (UNAME) - > AGR_NAME (Role) 关系 - 一对多

AGR_AGRS : 角色 (AGR_NAME) - > 子角色 (CHILD_AGR) 关系 - 一对多

但是,结果并不准确,因为查询未识别用户 (UNAME) 的角色 (AGR_NAME) 中存在的子角色 (CHILD_AGR)。

你能帮我解决同样的问题吗?下面是我正在使用的查询。


SELECT 
agr_users.UNAME, 
agr_users.AGR_NAME, 
AGR_AGRS.CHILD_AGR, 

FROM AGR_USERS LEFT JOIN AGR_AGRS
ON AGR_AGRS.AGR_NAME=agr_users.AGR_NAME

**** MS-SQL 服务器

下面是表格数据

表1:AGR_AGRS(角色-子角色表)

AGR_NAME         CHILD_AGR
abc                       x
abc                       y

表 2:AGR_USERS(用户 - 角色表)

UNAME      AGR_NAME
nik              abc

预期结果:(用户-角色-子角色)

UNAME       AGR_NAME    CHILD_AGR
nik                abc                  x
nik                abc                  y

标签: sqlsql-server

解决方案


这是一个非常简单的查询。下面应该为您提供完整列表:

select u.UNAME
      ,a.AGR_NAME
      ,a.CHILD_AGR
from AGR_USERS as u
    left join AGR_AGRS as a
        on u.AGR_NAME = a.AGR_NAME

如果不是,您的环境必须与您在问题中表示它的方式不同。


推荐阅读