mysql - 在 MySQL 中对同一个表使用子查询

标签 mysql

我有一个名为 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/

相关文章:

mysql - 检查mysql中n个数字是否相等

mysql - 从两个表中选择相同的值对

php - Ajax 方法 post 和 url 无法更改我的数据库

php - 文件路径可以用内存资源代替吗?

java - JPA(ebean)部分mysql日期

javascript - 如何使用 json 函数用数据库填充组合框?

javascript - 如何在 jquery 中删除 onclick 和再次点击值时获取值?

mysql - 何时选择 Oracle 而不是 MySQL?

mysql - 在 MySQL 上创建类型

MySql Server 5.7 未在 DATETIME(3) 列上保存毫秒