查询思路

来源:互联网 发布:小天才早教机软件下载 编辑:程序博客网 时间:2024/04/30 08:51

2.1 示例

[题目] 从 scott 用户的 emp/dept 表中,找到“来自芝加哥最有钱的那个人”。

首先,我们需要理清思路。

这里总共有两个条件:

  1. 这个人来自芝加哥
  2. 这个人是最有钱的,而且是芝加哥最有钱的

我们可以看出,第二个条件是依赖第一个条件的。

所以,分两步查询:

  1. 找出所有来自芝加哥的人
  2. 从这些人中,找到最有钱的那个。这一步,可以通过 max 函数或者 order by 方式实现。

下面是语句示例:

---- 第一步:找到来自芝加哥的所有人。下面两种写法等价:select e.* from emp e  join dept d on (e.deptno=d.deptno)  where d.loc='CHICAGO';select e.* from emp e, dept d  where d.deptno = e.deptno        and d.loc='CHICAGO';---- 第二步,基于上面结果,筛选出最有钱的那个-- 可以通过 max 函数select e.* from emp e, dept d  where e.deptno = d.deptno        and d.loc='CHICAGO'        and sal =             (select max(sal) from emp e, dept d              where e.deptno = d.deptno                    and d.loc='CHICAGO');-- 可以通过 order by 方式select ename from  (select e.*, d.* from emp e, dept d    where e.deptno = d.deptno          and d.loc='CHICAGO'    order by sal desc)where rownum = 1;

注意,实现的方式,不止上面的那些。但总体 思路 是一样的。

所以,思路永远是最重要的。


原创粉丝点击