题目:查询工资大于本部门平均工资的员工基本信息 通常的想法是:首先令子查询返回多个数据,主查询再去选择,子查询和主查询是隔离的,子查询过程不涉及主表(主查询) 但是,在这里不可行,因为子查询结果返回后主查询无法进行逐行的匹配
不能先在子查询里查出来再返回,而需要在子查询中绑定主表数据 不同之处在于,是变化的
方法一:子查询
select e1.* from employees e1,employees e2 where e1.salary > ( select avg(salary) avgS from employees --在这里绑定主表 where e1.employee_id = e2.employee_id )为什么 e1.employee_id = e2.employee_id就能得到平均工资?
多提一点 非传统格式的表连接 这段SQL script主要是表明可以把select出来的记录作为表连接到已有的表上 方法二:表连接
select e.*,t.avgS from employees e left join ( select avg(salary) avgS, department_id from employees group by department_id )t on e.department_id = t.department_id where e.salary > avgS