Sql 使用最近获取的ID从同一行检索名称

Sql 使用最近获取的ID从同一行检索名称,sql,Sql,我在胡闹,想知道(标题)。让我解释一下 假设我有一个Employee表,该表中有ID ManagerID和Name ID。因此,在查询找到每个人的经理后,您将得到类似的结果 Person's Name | Their ID | Manager ID 如果可能的话,我想知道的就是他。经理也在这个员工表中,他们要么有其他员工作为经理,要么没有经理。所以从技术上讲,我拥有我所需要的所有信息。只需将int(ManagerID)与同一行中的人名交换即可 这是可能的还是SQL不能处理这种交换 编辑: 下面

我在胡闹,想知道(标题)。让我解释一下

假设我有一个Employee表,该表中有
ID ManagerID和Name ID
。因此,在查询找到每个人的经理后,您将得到类似的结果

Person's Name | Their ID | Manager ID
如果可能的话,我想知道的就是他。经理也在这个员工表中,他们要么有其他员工作为经理,要么没有经理。所以从技术上讲,我拥有我所需要的所有信息。只需将int(ManagerID)与同一行中的人名交换即可

这是可能的还是SQL不能处理这种交换

编辑: 下面是我一直使用的测试表和值:

Create table Employee
(   ID int,
    Name varchar (50), 
    ManagerID int );

Insert into Employee
Values( 101, 'Joe Smoeington', 102);

Insert into Employee
Values( 102, 'This Guy', 106);

Insert into Employee
Values(103, 'Test', 102);

Insert into Employee
Values(104, 'Rob', 105);

Insert into Employee
Values(105 , 'Jeremy', NULL);

Insert into Employee
Values(106 , 'Sam', NULL);

我的观点是: 选择ID、名称、ManagerID 来自员工 其中ManagerID不为NULL

最终,这将为您提供一张如下所示的表格:

ID      Name       ManagerID
101 Joe Smoeington  102
102 This Guy        106
103 Test            102
104 Rob             105
我尝试过的事情:

Select ID, Name, ManagerID
From Employee Join Employee
On Employee.ID = Employee.ManagerID
Where ManagerID IS NOT NULL

Select ID, Name, (Select Name From Employee Where (didnt know what to put here and gave up on this attempt)
From Employee
Where ManagerID IS NOT NULL

还有一些不值得一提的

您可以使用类似这样的方法

 SELECT T1.Name AS Employee_Name,T1.ID AS Employee_ID,(IFNULL(T2.ID,'NA')) AS ManagerID
    FROM
    employee T1
    LEFT JOIN employee T2 ON T1.ManagerID = T2.ID
编辑: 如果您只想看到拥有经理的员工

 SELECT T1.Name AS Employee_Name,T1.ID AS Employee_ID,(IFNULL(T2.ID,'NA')) AS ManagerID
            FROM
            employee T1
            INNER JOIN employee T2 ON T1.ManagerID = T2.ID
这是你的电话号码


希望这能有所帮助。

对于初学者,包括您的表结构,并在尝试解决此问题后发布您需要对同一个表进行左外连接抱歉,这在很大程度上是假设的,我想我可以创建一个表结构。您使用的是哪个数据库?MySQL还是Oracle?请相应地修复您的标签。感谢您解释自我加入。我以前犯过一个错误,只是试图命名其中一个表,而不是两个表。这真的很酷。哇,直到现在才注意到所有的新东西。我会把它通读一遍。谢谢你,阿加尼不行,我的代表太低了。我仍然是新的,因为您有特定于产品的SQL,并且没有问题的dbms标记,请指定这适用于哪个dbms!