我有一个名为 Staff
的表,其中包含以下字段:idStaff、姓名、电话、电子邮件、SupervisorId
。
SuervisorId
是该员工主管的 idStaff
。
我想显示所有员工的列表及其基本信息(姓名、电子邮件等)以及主管的姓名。
所以像这样:
select idStaff
, Name
, Email
, Phone
, (select Name from Staff where idStaff = SupervisorId) as SupervisorName
from Staff
order
by Name ASC
查询无效。我尝试连接这两个表,但我对如何从连接中的子查询中获取名称感到困惑。
select idStaff
, Name
, Phone
, Email
from Staff a
inner
join Staff b
on a.idStaff = b.SupervisorId
order
by Name ASC
最佳答案
也许是这样的......
select s1.idStaff
, s1.Name
, s1.Email
, s1.Phone
, s2.Name as SupervisorName
from Staff s1
LEFT JOIN Staff s2 ON s1.SupervisorId = s2.idStaff
order
by s1.Name ASC
或者你可以做类似......
select s.idStaff
, s.Name
, s.Email
, s.Phone
, (select top 1 m.Name from Staff m
where s.SupervisorId = m.idStaff) as SupervisorName
from Staff s
order by s.Name ASC
关于mysql - 在 MySQL 中对同一个表使用子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37091456/