SQL Server获取查询的别名

时间:2013-10-08 19:27:56

标签: sql sql-server-2008

请检查小提琴:myFiddle

查询:

create table Emp(empId int primary key, EmpName varchar(50),MngrID int)

insert into Emp(empId,EmpName,MngrID)values(1,'A',2)
insert into Emp(empId,EmpName,MngrID)values(2,'B',null)

A有mngr B但A没有mngr,所以从查询中获取记录时它会显示:

EmpId           EmpName     MngrName(alias MngrName)
 1                 A            B
 2                 B            null

如何使用查询获取上述数据?

3 个答案:

答案 0 :(得分:1)

你需要LEFT JOIN表给自己:

select A.empID, A.empName, b.empName as mgrName
from emp A left join emp B on  A.mngrID = b.empID

http://sqlfiddle.com/#!3/184dc/8

答案 1 :(得分:1)

由于某些原因它在SQLFiddle中不起作用,但我在我自己的SQL Server实例中运行它以验证它是否有效:

SELECT  e1.EmpID, e1.EmpName, e2.EmpName
FROM  emp e1 LEFT OUTER JOIN emp e2 
ON e1.MngrID = e2.EmpID

基本上,你通过声明表的两个实例(e1和e2),然后将第一个实例的MngrID连接到第二个实例的EmpID来进行“自联接”。

答案 2 :(得分:0)

从emp选择empId,EmpName,(SELECT EmpName FROM emp WHERE MngrID = amp1.MngrID)来自emp的AS Manager作为amp1