尝试一
结果:不通过
代码:
select salaries.*,dept_manager.dept_no from dept_manager inner join salaries
on salaries.emp_no = dept_manager.emp_no where dept_manager.to_date='9999-01-01' and salaries.to_date='9999-01-01';
分析:主、附表顺序搞反了。因为题目要求salariesz在前,编号在后
尝试二
结果:答案正确:恭喜!您提交的程序通过了所有的测试用例
代码:
select salaries.*,dept_manager.dept_no from salaries inner join dept_manager on salaries.emp_no = dept_manager.emp_no
where dept_manager.to_date='9999-01-01' and salaries.to_date='9999-01-01';
warning:我将数据导入mysql中,使用尝试一、尝试二、获得的结果都是一样的。真是日了狗了 ?
结论
- inner join 是保留相同的部分
- left join 保留左边的部分,左边那个表为主表
- right join 保留右边的部分,右边那个表为主表
参考
left join 与 right join 区别
图解SQL的inner join、left join、right join、full outer join、union、union all的区别
博客围绕查找当前薪水详情及部门编号展开,进行了两次代码尝试。第一次因主、附表顺序错误未通过,第二次答案正确。还提到将数据导入MySQL,两次尝试结果相同。最后得出inner join、left join、right join的保留规则,并给出相关参考。
489

被折叠的 条评论
为什么被折叠?



