首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

子查询怎么转换为连接查询

2012-10-13 
子查询如何转换为连接查询以下 子查询 能不能转换成连接查询?SQL codeselect ename, salary, deptno from

子查询如何转换为连接查询
以下 子查询 能不能转换成连接查询?

SQL code
select ename, salary, deptno from emp_xxx a where salary < (select avg(salary) from emp_xxx b where b.deptno = a.deptno);


[解决办法]
SQL code
select a.ename, a.salary, a.deptno from emp_xxx ajoin (select deptno,avg(salary) as avs from emp_xxx group by deptno) bon a.deptno = b.deptnowhere a.salary < b.avs
[解决办法]
SQL code
select a.ename,a.salary,a.deptno from emp_xxx a inner join (select avg(salary) salary,deptno from emp_xxx ) b on b.deptno = a.deptno and a.salary<b.salary
[解决办法]
探讨
好不容易转换为连接,怎么还是有子查询


引用:
SQL code
select a.ename, a.salary, a.deptno
from emp_xxx a
join (select deptno,avg(salary) as avs from emp_xxx group by deptno) b
on a.deptno = b.deptno
where……

[解决办法]
SQL code
;with cte as(SELECT   deptno,          Avg(salary) AS avs             FROM     emp_xxx             GROUP BY deptno)SELECT a.ename,       a.salary,       a.deptnoFROM   emp_xxx a       JOIN  cte b         ON a.deptno = b.deptnoWHERE  a.salary < b.avs
[解决办法]
05以后的写法。sql server
[解决办法]
没说过子查询一定会慢
[解决办法]
这个叫CTE,共同表表达式,是sql好像99以后的标准,就算Oracle、db2也支持的。
[解决办法]
我个人的理解是同时执行,因为是关联的。

热点排行