SQL Select 中的相关子查询

SQL Correlated Subquery in Select

是否可以像这样在 SELECT 中创建相关子查询?

SELECT  EmployeeID,
EmployeeName,
ManagerID,
    (SELECT EmployeeName FROM tblEmployee WHERE EmployeeID = ManagerID)
FROM tblEmployee 
WHERE EmployeeID = '12345';


ManagerID 应该相等并且应该是员工 '12345' 的 ManagerID。
子查询的目的是根据经理的 ID 获取经理的全名。

非常感谢您的回复。
我是新手。

谢谢,
Rye。

试试这个,

DECLARE @tblEmployee TABLE(EmployeeID INT,EmployeeName VARCHAR(100),ManagerID INT)
INSERT INTO @tblEmployee VALUES(1,'Arun',2)
INSERT INTO @tblEmployee VALUES(2,'Dinesh',NULL)


SELECT  EmployeeID,
EmployeeName,
ManagerID,
    (SELECT M.EmployeeName FROM @tblEmployee M WHERE T1.ManagerID = M.EmployeeID)ManagerName
FROM @tblEmployee T1
WHERE EmployeeID = 1;

是的。为了简化您的 SQL 写作,当您的查询有多个 table 引用时,请记住始终限定所有列名:

SELECT e.EmployeeID, e.EmployeeName, e.ManagerID,
       (SELECT m.EmployeeName
        FROM tblEmployee m
        WHERE m.EmployeeID = e.ManagerID
       )
FROM tblEmployee e
WHERE e.EmployeeID = '12345';

我使用这个查询得到了数据。

SELECT e.EmployeeID, e.EmployeeName, e.ManagerID, m.EmployeeName as ManagerName 
FROM tblEmployee e 
JOIN tblEmployee m
ON e.ManagerID = m.EmployeeID
WHERE e.EmployeeID = '12345';

感谢所有发布回复的人。
没有你们永远不会解决它。

谢谢,
黑麦