【发布时间】:2018-07-07 12:28:08
【问题描述】:
我需要找到一个薪水高于其经理的员工。为此,我曾经使用以下查询并且它有效;
选择 e1.EmpID ,e1.EmpName ,e1.EmpSalary ,e1.ManagerID FROM empalary e 内部加入 empsalary e1 ON e.EmpID = e1.ManagerID 在哪里 e1.EmpSalary > e.EmpSalary但是跟随一个不起作用。我想知道为什么不是?为什么它的结果为空?正确的格式应该是什么?
SELECT *
FROM empsalary as e
WHERE e.empsalary=(
SELECT e1.empsalary
FROM empsalary as e1
WHERE e.EmpID = e1.ManagerID
AND e1.EmpSalary > e.EmpSalary)
此处是示例数据和代码;
EmpID EmpName EmpSalary ManagerID
----------- ---------- -------------------- -----------
1 Neevan 100000 6
2 Mukesh 30000 6
3 Disha 50000 6
4 Martin 90000 6
5 Roy 170000 6
6 Anvesh 168000 NULL
CREATE TABLE empsalary
(
EmpID INT
,EmpName VARCHAR(10)
,EmpSalary BIGINT
,ManagerID INT
)
INSERT INTO empsalary
VALUES
(1,'Neevan',100000,6)
,(2,'Mukesh',30000,6)
,(3,'Disha',50000,6)
,(4,'Martin',90000,6)
,(5,'Roy',170000,6)
,(6,'Anvesh',168000,NULL)
【问题讨论】:
标签: sql sql-server self-join correlated-subquery