嵌套查询的分类-相关子查询与不相关子查询

原创 2012年03月29日 12:09:24

子查询一定要用()包围

 一.一个select...From...Where查询语句块可以嵌套在另一个select...From...Where查询块的Where子句
中,称为嵌套查询。外层查询称为父查询,主查询。内层查询称为子查询,从查询。
子查询可以嵌套多层,子查询查询到的结果又成为父查询的条件。子查询中不能有order by分组语句。(因为子查询只是个中间结果,分组等是作用于最后的结果拥有显示
先处理子查询,再处理父查询。

 

二不相关子查询

 

1简单嵌套查询
    
查询选修课程号为'101'并且成绩高于学生号为'9501101'的所有学生的成绩.
select * from sclass
where cno='101' and degree>=
(select degree from sclass where sno='9501101'and cno='101')  

当子查询跟随在 =!=<<=>>=之后,子查询的返回值只能是一个, 否则应在外层where子句中用
一个in限定符,即要返回多个值,要用in或者not in

2[not] in的嵌套查询 
   
 只要主查询中列或运算式是在(不在)子查询所得结果列表中的话,则主查询的结果为我们要的数据
    select sales_id,tot_amt
    from sales 
    where sale _id  in(select sale_id from employee where sex='F')
where sno not in(Select distinct sno from sclass)

 3。 带exists的嵌套查询
 子查询的结果至少存在一条数据时,则主查询的结果为我们要的数据。(exists)或自查询的结果找不到数据时,则主查询的结果为我们要的数据(not exists)
 我们经常查询的两个表有多少重复的记录就用这个
 以下范例让你找出滞销的产品,也就是尚未有任何销售记录的库存产品。此范例主要是查询以库文件中的每一条产品代码到销售明细表中去查询,如果查询不到任何一条,表示该产品未曾卖出任何一件。
  select * from stock a
  where not exists(select * from sale_item b
                          where a.prod_id=b.prod_id and a.stup_id=b.stup_id)

 

这是个嵌套子查询!

 4.select ... where 列或运算式 比较运算运算【any|all](子查询)


   只要主查询中列或运算式与子查询所得结果中任一(any)或全部(all)数据符合比较条件的话则主查询的结果为我们要的数据

  select sale_id,tot_amt
    from sales 
    where tot_amt>any(select tot_amt from sales where sale_id='e0013'and 'order_date='1996/11/10')

       选出不同的人金额最高的订单
    select *  from  sales a
    where tomat=(select max(totmat) from sales  where name=a.name)

 

:相关子查询(多值子查询)

1>非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询,并且它是优先于外部查询先执行的,他执行了再执行外部

 

 

 

Select * from dba_users where rownum<=5; --是可以的,但
Select * from dba_users where rownum>=5; --将不返回任何记录
但我们可以用一个子查询来解决这个问题:

select * from (select rownum rownumber,username,user_id,password from dba_users where rownum <= 3) t where t.rownumber >= 2;

这是一个不相关子查询,因为子查询只执行了一次


2>相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。并且是外部先查询一次,然后再执行一次内部查询!(由于他执行查询的次数多,可见他的效率并不高,可以用存储过程来代替他)

 

 

微笑哭哭哭

还是没有弄的太明白(现在弄明白了些了

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

嵌套查询的分类-相关子查询与不相关子查询

子查询一定要用()包围  一.一个select...From...Where查询语句块可以嵌套在另一个select...From...Where查询块的Where子句 中,称为嵌套查询。外层查询称...

嵌套查询:相关子查询和非相关子查询

嵌套查询

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Oracle PL/SQL开发基础(第十弹:子查询)

在编写SQL语句时,一些查询必须要基于另一个查询的结果才能完成数据的提取,这种查询的构造方式称为子查询。 比如,要获取emp表中比SMITH薪资高的人的列表,必须要构造两个查询,一个查询用来查询SM...

相关子查询和嵌套子查询 sql

相关子查询和嵌套子查询 [SQL Server] SQLServer子查询可以分为 相关子查询 和 嵌套子查询 两类。前提,假设Books表如下: 类编号  图书名         出...

相关子查询和嵌套子查询 [SQL Server]

原文链接:http://www.cnblogs.com/Ryan_j/archive/2010/10/20/1857026.html

相关子查询和嵌套子查询 [SQL Server]

SQLServer子查询可以分为 相关子查询 和 嵌套子查询 两类。前提,假设Books表如下: 类编号  图书名         出版社 ...

MySQL相关子查询和嵌套子查询

SQLServer子查询可以分为 相关子查询 和 嵌套子查询 两类。前提,假设Books表如下: 类编号  图书名         出版社 ...

相关子查询和嵌套子查询 [SQL Server]

SQLServer子查询可以分为 相关子查询 和 嵌套子查询 两类。前提,假设Books表如下: 类编号  图书名         出版社     ...

相关子查询 与非相关子查询

原文链接:http://www.cnblogs.com/gaiyang/archive/2011/04/01/2002398. 1:标量子查询(相对于多值子查询): 只有标量子查询返回的是...

相关子查询 与非相关子查询

1:标量子查询(相对于多值子查询): 只有标量子查询返回的是单个记录或者不返回,就是有效的子查询。 Ex1:select OrderId From Orders where EmployeeI...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)