zoukankan      html  css  js  c++  java
  • sql 子查询  相关…


    select id,fpbl from j_pbxx p where id_fpb = (select id_fpb from j_pbxx where id='0400000000002N') and sffp='是'
    子查询 通常 在where 子句中
    comparison [ANY | ALL | SOME] (sqlstatement)
    expression [NOT] IN (sqlstatement)
    [NOT] EXISTS (sqlstatement)

    SELECT * FROM Products
    WHERE UnitPrice > ANY
    (SELECT UnitPrice FROM OrderDetails

    WHERE Discount >= .25);


    SELECT department_id, MIN(salary)
    FROM employees
    GROUP BY department_id
    HAVING
    MIN(salary) >
    (SELECT MIN(salary)
    FROM employees
    WHERE department_id = 50);
    求每个部门的最小工资,但是要高于50号部门的工资。

    上面是不相关子查询 非相关子查询(嵌套子查询):
    不相关子查询是指子查询独立于外层语句(主查询),他不依赖于其外层语句的操作结果,他们执行时可分为两个独立的步骤,即先执行子查询,在执行外层查询
    SELECT 姓名 FROM STUDENT WHERE入学成绩>(select avg(入学成绩) FROM STUDENT )
    当子查询跟随在 =、!=、<、<=、>、>= 之后, 子查询的返回值只能是一个, 否则应在外层where子句中用
    一个in限定符,即要返回多个值,要用in或者not in


    相关子查询:

    select * from work a where 基本工资=(select max(基本工资) from work b where a.部门名称=b.部门名称)
    说明:由外查询提供一个部门名称给内查询,内查询利用这个部门名称找到该部门的最高基本工资,然后外查询根据基本工资判断是否等于最高工资,如果是的,则显示出来.
    相当于:select * from work,(select 部门名称,max(基本工资) as 基本工资 from work group by 部门名称 as t)
    where work.基本工资=t.基本工资 and work.部门名称=t.部门名称

    区别相关子查询,非相关子查询.就是看子查询中用到没用到外层查询的东西. 子查询是否可独立执行

    特征

    1.非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。 
    2.相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。

    相关子查询中,外部的每一行都要带入到子查询计算(外部有几行,子查询就执行几次)

    非相关子查询只需执行一次.     

    差别还是挺大的.效率也是. 相关子查询也许可以调优

  • 相关阅读:
    scp远程文件传输
    ssh远程登录
    PHP PDO使用
    Linux引导流程
    Samba服务器搭建
    linux ftp服务器搭建
    NfS服务的搭建
    Discuz! X2.5数据库字典【转载】
    javaSctipt基础
    压缩文件 compress files 以7z 格式及解压 或者别的格式
  • 原文地址:https://www.cnblogs.com/wangduqiang/p/4180931.html
Copyright © 2011-2022 走看看