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
以下是专栏:
两个联接都应该使用
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;