mysql - SQL 查询中的 JOIN 运算符未返回预期结果
问题描述
我想使用JOIN
运算符带来结果这里是我的代码:
create table emp(E_id integer, e_name varchar(100), d_ID integer , primary key(e_id));
create table dep (d_ID integer, d_name varchar(100), manager_id integer ,primary key(d_ID) , FOREIGN KEY (manager_id) REFERENCES emp(E_id));
alter table emp add FOREIGN KEY(d_ID) references dep(d_ID);
insert into dep values(11,'computer',1);
insert into dep values(12,'commerce',2);
insert into dep values(13,'technology',3);
insert into emp values(1,'vishal',11) ;
insert into emp values(2,'sachin',12) ;
insert into emp values(3,'deepal',13) ;
insert into emp values(4,'sumit',11) ;
insert into emp values(5,'vinay',11) ;
insert into emp values(6,'ravish',14) ;
我想使用连接运算符(例如 vinay 经理)搜索特定员工的经理,结果应该是 vishal 我使用了嵌套查询:
select e_name
from emp
where e_id in (select manager_id
from dep
where dep.d_id in(select d_ID
from emp
where emp.e_name ='sumit'));
我得到了正确的结果,但是当我使用JOIN
运算符时它不工作它显示我的结果
vishal
sachin
deepal
我期望结果 vishal 这里是代码:
select e_name
from emp natural join dep
where dep.manager_id=emp.e_id and emp.e_name='sumit';
解决方案
您需要加入emp
并dep
再次加入emp
:
select e.e_name
from emp join dep
on dep.d_id = emp.d_id
inner join emp e
on e.e_id = dep.manager_id
where emp.e_name='sumit';
查看演示
推荐阅读
- oauth-2.0 - How can I implement Dropbox OAuth2 + PKCE flow with Blazor Webassembly?
- c# - 如何使用返回不一致结果的比较器对通用列表进行排序?
- r - 在 for 循环中填充向量时遇到问题
- latex - 多行MathJax的左对齐行
- xml - 为什么 Powershell 会输出不需要的调试字符串?
- java - SonarQube Maven Java 无法执行目标 org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar
- numpy - 如何将包含积分和导数的 sympy 表达式转换为 numpy
- java - 如何使用 i18 消息处理自定义异常
- r - survfit 数据框中的错误消息以在 R 中生成生存图
- python-3.x - 如何使用 WMIC 和 Powershell 定位可执行路径