zoukankan      html  css  js  c++  java
  • 数据库关联子查询和非关联子查询

    非关联子查询:数据库嵌套查询中内层查询是完全独立于外层查询的。
    执行顺序:
    先执行内层查询
    得到内层查询的结果后带入外层,再执行外层查询
    select * from tableA where tableA.column = (select tableB.column from tableB )
    1
    关联子查询:数据库嵌套查询中内层查询和外层查询不相互独立,内层查询也依赖于外层查询。
    执行顺序:

    先从外层查询中查询中一条记录
    再将查询到的记录放到内层查询中符合条件的记录,再放到外层中查询
    重复以上步骤
    例如:
    select * from tableA where tableA.cloumn < (select column from tableB where tableA.id = tableB.id))
    1
    所以是:先查询到到一条tableA的记录;
    进入内层查询,根据tableA.id在tableB中找到满足tableB.id与之相等的记录,如果找到符合A表那条记录的column值<B表该条记录的column值,则A表那条记录满足条件,则查询输出一条记录。
    找到外层查询的下一条记录,重复以上步骤,直到A表记录查询完毕。
    由此可见:关联子查询的查询时交叉进行的。

    子查询虽然是一种嵌套查询的形式,不过我们依然可以依据子查询是否执行多次,从而将子查询划分为关联子查询和非关联子查询。

    子查询从数据表中查询了数据结果,如果这个数据结果只执行一次,然后这个数据结果作为主查询的条件进行执行,那么这样的子查询叫做非关联子查询。

    同样,如果子查询需要执行多次,即采用循环的方式,先从外部查询开始,每次都传入子查询进行查询,然后再将结果反馈给外部,这种嵌套的执行方式就称为关联子查询。

    非关联子查询可以写成join表关联的模式

    想要查找每个球队中大于平均身高的球员有哪些,并显示他们的球员姓名、身高以及所在球队ID。

    非关联子查询的写法为:

    首先我们需要统计球队的平均身高,即SELECT avg(height) FROM player AS b WHERE a.team_id = b.team_id,然后筛选身高大于这个数值的球员姓名、身高和球队ID

    SELECT player_name, height, team_id FROM player AS a WHERE height > (SELECT avg(height) FROM player AS b WHERE a.team_id = b.team_id)

    join表关联的写法为:

    select c.player_name,c.height,c.team_id from (select a.player_id,a.team_id,a.player_name,a.height,b.heih from player a left join (select team_id,avg(height) as heih from player group by team_id) b on a.team_id=b.team_id) c where c.height>c.heih 


    ————————————————
    版权声明:本文为CSDN博主「、留白」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_43323867/article/details/107499968

  • 相关阅读:
    go 语言之fmt.Sprintf格式化使用
    golang 中string和int类型相互转换
    GO 获取时间的日期函数、时间戳函数
    go 字符串切割方法小结
    php获取中英文字符串字符长度mb_strlen,字节长度strlen
    linux 之 grep 命令
    linux 无界面环境安装chrome,chromedriver,selenium
    kafka 常用命令总结
    linux中系统中 /bin、/sbin、/usr/bin、/usr/sbin、/usr/local/bin、/usr/local/sbin 目录的含义及区别
    3306端口被占用导致MySQL无法启动
  • 原文地址:https://www.cnblogs.com/hd92/p/14661930.html
Copyright © 2011-2022 走看看