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';
感谢所有发布回复的人。
没有你们永远不会解决它。
谢谢,
黑麦
是否可以像这样在 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';
感谢所有发布回复的人。
没有你们永远不会解决它。
谢谢,
黑麦