FROM 子句里的子查询,用得顺手是真的能省不少事。你像查员工信息这种需求,直接在 FROM 里嵌个按部门分组的平均工资子查询,逻辑就清晰多了。要注意一点,FROM 里的子查询一定得起个别名,不然 Oracle 会报错,挺严格的。你可以参考这个例子,思路还蛮实用的:
SELECT employee_id, first_name, last_name, d.avgsal
FROM employees,
(SELECT department_id, AVG(salary) avgsal FROM employees GROUP BY department_id) d
WHERE employees.department_id = d.department_id;
上面这段就是经典写法了,把子查询当成临时表,联表查员工信息+部门平均工资,一步搞定,效率也还不错。
如果你对子查询不太熟,建议顺手看看这几个:
- ORACLE 子查询类型 —— 分类讲得比较细,适合入门
- SQL 查询 FROM 子句详解 —— FROM 子句怎么写、写在哪儿都讲得比较清楚
- SQL 多行子查询示例查找各部门工资最高的员工 —— 实战感强,看完能直接上手
嗯,如果你写 SQL 总纠结“放哪儿写合适”,那不妨多练练 FROM 子查询这招,灵活又实用。