我正在尝试执行一个联接子查询来仅返回收入低于 46000 的员工姓名,并且我可以通过返回员工 ID(但不能没有它)来使其正常工作。
我就是这样做的。
Select e.eid, e.ename
From employee_table e
Inner Join (
Select salary, eid
from salary
Where salary > 46000
) as s
On e.eid = s.eid;
最佳答案
这是因为您使用的是动态临时表,如果您不选择 eid 列,您的临时 dinamica 表不包含此值,并且 join 中的 on 子句失败
Select e.eid, e.ename
From employee_table e
Inner Join (
Select salary, eid
from salary
Where salary < 46000
) as s
On e.eid = s.eid;
您可以在没有动态临时表的情况下使用内部联接
Select e.eid, e.ename
From employee_table e
INNER JOIN salary s On e.eid = s.eid
where s.salary < 46000
关于mysql - 如何子查询正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39935965/