所以我有一个包含列的表:
UID_person, UID_personHead, Firstname, LastName
UID_personhead的值等于UID_person。UID_personHead是管理器的UID_person所以我想查询它并返回类似
这样的内容UID_person | FirstName | LastName | 使用UID_personHead的管理员名称 | 1 | 莎拉道明> | 杰克 | 2
---|---|---|---|
雅各 | 史密斯大卫 |
在UID_PersonHead
上将表self join回自身
SELECT p.UID_Person, p.FirstName, p.LastName, m.FirstName
FROM person p
LEFT JOIN person m ON m.id = p.UID_PersonHead;
你的数据是这样的
declare @a table
(UID_person int, UID_personHead int, Firstname varchar(30), LastName varchar(30))
insert into @a
(UID_person,UID_personHead,Firstname,LastName) values
(1 ,3,'Sarah','Smith'),
(2 ,4,'Jacob','Smith'),
(3 ,3,'Jack','johnson'),
(4 ,4,'David','johnson');
您需要将您的表与自身连接
select a0.UID_person, a0.Firstname, a0.LastName,a1.Firstname
from @a a0
join @a a1
on a0.UID_personHead=a1.UID_person
where a1.UID_personHead<>a0.UID_person