如何修改内连接SQL以筛选hiredate列中1980年的数据?
解决方案:筛选1980年入职的员工部门信息
没问题,这有两种实用的方法可以实现你的需求,帮你精准筛选出1980年入职的员工对应的部门信息:
方法一:直接匹配提取的年份
这种方式和你原SQL里提取年份的逻辑保持一致,理解起来很直观:
SELECT EXTRACT(YEAR FROM e.hiredate), d.dname FROM emp e INNER JOIN dept d ON e.deptno = d.deptno WHERE EXTRACT(YEAR FROM e.hiredate) = 1980;
我们在原查询的基础上添加了WHERE子句,直接判断提取出的入职年份是否等于1980,就能过滤出目标数据。
方法二:利用日期范围过滤(推荐,性能更优)
如果你的emp表中hiredate字段建有索引,推荐用这种方式,数据库可以直接利用索引扫描,查询效率更高:
SELECT EXTRACT(YEAR FROM e.hiredate), d.dname FROM emp e INNER JOIN dept d ON e.deptno = d.deptno WHERE e.hiredate BETWEEN '1980-01-01' AND '1980-12-31';
这里通过限定hiredate的范围在1980年的第一天到最后一天,同样能筛选出1980年入职的记录,同时避免了对每一行数据执行EXTRACT函数的开销。
两种方法都能达到你想要的效果,你可以根据自己的数据库环境和性能需求选择合适的方案。
内容的提问来源于stack exchange,提问作者Bala
相关产品推荐
相关产品推荐

