Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 同一个表中的2个内部联接和1个可选列_Sql_Sql Server - Fatal编程技术网

Sql 同一个表中的2个内部联接和1个可选列

Sql 同一个表中的2个内部联接和1个可选列,sql,sql-server,Sql,Sql Server,我正在尝试将我的UserAccount表连接到自身 CreatedBy=UserId生成CreatedByName ModifiedBy=UserId,但这可以为空以生成ModifiedByName 这是我的问题 SELECT b.UserId, b.Username, b.Name, b.CreatedBy, a.Name as CreatedByName, b.ModifiedBy, b.ModifiedDate from UserAccount INNER JOIN UserAccount

我正在尝试将我的
UserAccount
表连接到自身

CreatedBy=UserId生成
CreatedByName

ModifiedBy=UserId,但这可以为空以生成
ModifiedByName

这是我的问题

SELECT b.UserId, b.Username, b.Name, b.CreatedBy, a.Name as CreatedByName, b.ModifiedBy, b.ModifiedDate from UserAccount
INNER JOIN UserAccount a ON a.CreatedBy = UserAccount.UserId
RIGHT OUTER JOIN UserAccount b ON b.ModifiedBy = a.UserId
但此查询只能获取ModifiedByName的联接,但无法获取CreatedByName

以下是专栏:

  • 用户ID(int)
  • 姓名(nvarchar)
  • CreatedBy(int)
  • 修饰符by(int)

  • 两个联接都应该使用
    LEFT JOIN
    s,以防缺少任何一个名称

    此外,使用表示表的表别名可以使查询更易于编写和读取:

    SELECT ua.*, uac.Name as CreatedByName, uam.Name as ModfiedByName
    FROM UserAccount ua LEFT JOIN
         UserAccount uac
         ON ua.CreatedBy = uac.UserId LEFT JOIN 
         UserAccount uam
         ON ua.ModifiedBy = uam.UserId;
    

    两个联接都应该使用
    LEFT JOIN
    s,以防缺少任何一个名称

    此外,使用表示表的表别名可以使查询更易于编写和读取:

    SELECT ua.*, uac.Name as CreatedByName, uam.Name as ModfiedByName
    FROM UserAccount ua LEFT JOIN
         UserAccount uac
         ON ua.CreatedBy = uac.UserId LEFT JOIN 
         UserAccount uam
         ON ua.ModifiedBy = uam.UserId;