Sql 仅返回包含两个联接的第一个表的结果
我有三张桌子。我需要从第一个表中获取lastname、firstname和employee number,并从另一个表中获取name 为了获得表s上的名称,表s和表sw上的slsrep列之间需要匹配 问题是我只想返回第一个表(p)中的行。第一个表中只有700条记录,但却有900条 基本上,我只想查看表p中的每一行,并匹配表s中的名称 这就是我目前拥有的:Sql 仅返回包含两个联接的第一个表的结果,sql,sql-server,join,Sql,Sql Server,Join,我有三张桌子。我需要从第一个表中获取lastname、firstname和employee number,并从另一个表中获取name 为了获得表s上的名称,表s和表sw上的slsrep列之间需要匹配 问题是我只想返回第一个表(p)中的行。第一个表中只有700条记录,但却有900条 基本上,我只想查看表p中的每一行,并匹配表s中的名称 这就是我目前拥有的: SELECT p.LastName, p.FirstName, p.EmpNo, s.Name FR
SELECT p.LastName,
p.FirstName,
p.EmpNo,
s.Name
FROM PDDA..PhoneDirectory p
LEFT OUTER JOIN nxtsql..swsmsn sw
ON p.EmpNo = sw.EmpNo
JOIN NxtSQL..SMSN s
ON sw.slsrep = s.slsrep
WHERE sw.statustype = 1
ORDER BY
p.LastName
有很多方法可以做到这一点。一种是使用子选择来获取s.Name:
SELECT p.LastName, p.FirstName, p.EmpNo, (
SELECT TOP 1 s.Name
FROM NxtSQL..SMSN s
INNER JOIN nxtsql..swsmsn sw
ON sw.slsrep = s.slsrep
WHERE p.EmpNo = sw.EmpNo
AND sw.statustype = 1
) AS Name
FROM PDDA..PhoneDirectory p
ORDER By p.LastName
左侧外部联接
应仅为联接