--查询的逻辑执行过程,来自技术内幕 (8) SELECT (9) DISTINCT (11) <TOP_specification> <select_list> (1) FROM <left_table> (3) <join_type> JOIN <right_table> (2) ON <join_condition> (4) WHERE <where_condition> (5) GROUP BY <group_by_list> (6) WITH {CUBE | ROLLUP} (7) HAVING <having_condition> (10) ORDER BY <order_by_list> 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/htl258/archive/2009/04/12/4065690.aspx
SELECT ENAME --5 FROM EMP ME --1 WHERE SAL=( SELECT MAX(SAL) --4 FROM EMP SE --2 WHERE SE.DEPTNO=ME.DEPTNO --3 )
SELECT ENAME FROM EMP ME WHERE SAL=(SELECT MAX(SAL) FROM EMP SE WHERE SE.DEPTNO=ME.DEPTNO)--SELECT MAX(SAL) FROM EMP SE WHERE SE.DEPTNO=ME.DEPTNO 这句话是每个部门最高的工资SELECT ENAME FROM EMP ME WHERE SAL=--根据最高的工资得到人名
SELECT ENAME FROM EMP ME WHERE SAL=(SELECT MAX(SAL) FROM EMP SE WHERE SE.DEPTNO=ME.DEPTNO)--SELECT MAX(SAL) FROM EMP SE WHERE SE.DEPTNO=ME.DEPTNO 这句话是每个部门最高的工资SELECT ENAME FROM EMP ME WHERE SAL=--根据最高的工资得到人名
本人理解是这样的; 1.首先执行一次外部查询 2.对于外部查询中的每一行分别执行一次子查询,而且每次执行子查询时都会引用外部查询中当前行的值。 3.使用子查询的结果来确定外部查询的结果集。 所以先从表EMP ME 中找到第一列的ename,和sal,然后通过 SELECT MAX(SAL) FROM EMP SE WHERE SE.DEPTNO=ME.DEPTNO查找表me第一列所对应的deptno与表se是否相同,如果相同则查出deptno=第一列的那个值的最高工资,然后与EMP ME 中第一列的ename,和sal比较,如果正确则打印,错误则不返回值。然后从表me第二列开始比较,不知道是否正确?
(8) SELECT (9) DISTINCT (11) <TOP_specification> <select_list>
(1) FROM <left_table>
(3) <join_type> JOIN <right_table>
(2) ON <join_condition>
(4) WHERE <where_condition>
(5) GROUP BY <group_by_list>
(6) WITH {CUBE | ROLLUP}
(7) HAVING <having_condition>
(10) ORDER BY <order_by_list> 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/htl258/archive/2009/04/12/4065690.aspx
FROM EMP ME --1
WHERE SAL=(
SELECT MAX(SAL) --4
FROM EMP SE --2
WHERE SE.DEPTNO=ME.DEPTNO --3
)
WHERE SAL=(SELECT MAX(SAL) FROM EMP SE WHERE SE.DEPTNO=ME.DEPTNO)--SELECT MAX(SAL) FROM EMP SE WHERE SE.DEPTNO=ME.DEPTNO 这句话是每个部门最高的工资SELECT ENAME FROM EMP ME
WHERE SAL=--根据最高的工资得到人名
WHERE SAL=(SELECT MAX(SAL) FROM EMP SE WHERE SE.DEPTNO=ME.DEPTNO)--SELECT MAX(SAL) FROM EMP SE WHERE SE.DEPTNO=ME.DEPTNO 这句话是每个部门最高的工资SELECT ENAME FROM EMP ME
WHERE SAL=--根据最高的工资得到人名
1.首先执行一次外部查询
2.对于外部查询中的每一行分别执行一次子查询,而且每次执行子查询时都会引用外部查询中当前行的值。
3.使用子查询的结果来确定外部查询的结果集。
所以先从表EMP ME 中找到第一列的ename,和sal,然后通过
SELECT MAX(SAL) FROM EMP SE WHERE SE.DEPTNO=ME.DEPTNO查找表me第一列所对应的deptno与表se是否相同,如果相同则查出deptno=第一列的那个值的最高工资,然后与EMP ME 中第一列的ename,和sal比较,如果正确则打印,错误则不返回值。然后从表me第二列开始比较,不知道是否正确?