zoukankan      html  css  js  c++  java
  • 子查询

    一、无关子查询

      查询结果作为外层查询的条件或结果集。

      例如:

      学生学科表 s_subject

      

      学生学科成绩表:s_subject_score

      

      需求:查询一个学生所有学科的成绩值。每个学生可以选择多个学科,且选择学科的数量不定。

      解决:将该学生选择的所有科目查询出来,用条件in再在学科成绩表中查询即可。

      select * from s_subject_score ste
      where ste.s_suject_id in (select st.id from s_subject st where st.studentid = ?)
      and ste.studentid = ?;

      特点:无关子查询往往先执行且只执行一次,并将结果提供给外层查询作为条件或结果集。

    二、相关子查询

      字面意思:子查询和外层查询是相关的。也就是说每次进行子查询时,都是先执行外层查询,然后将外层查询符合条件的值传入到内层子查询作为条件值。

      例如:上面的查询只查询除了id,并没有相应的科目名称。

      学科表:subject

      

      需求:查询某个用户所有学科的成绩(表数据只存储用户一个学期各学科成绩,即每个学科只有一个成绩)

      解决:“学生学科表”和“学生学科成绩表”联合查询,作为外部查询;根据每次外部查询提供的学科值再在subject表中查询其名称

    select (select st.SUBJECT_NAME ST.id = s.SUBJECTID from subject st) subjectName,--相关子查询
      STE.SCORE score
    from s_subject_score ste,s_subject s where ste.s_suject_id in (select st.id from s_subject st where st.studentid = ?)--无关子查询 and ste.studentid = ?;

      相关子查询会在外层查询得到一条数据后,或得该数据对应的值再进行子查询。

    注:以上查询均可通过连接查询得到结果,这里不做讨论,只是记录下“无关子查询”和“相关子查询”的用法。

  • 相关阅读:
    Dump 文件生成与分析
    打造支持apk下载和html5缓存的 IIS(配合一个超简单的android APP使用)具体解释
    GridView编辑删除操作
    google域名邮箱申请 gmail域名邮箱申请(企业应用套件)指南
    nvl,空时的推断和取值
    如何将图片保存至自定义分组
    Java实现 蓝桥杯VIP 算法训练 集合运算
    Java实现 蓝桥杯VIP 算法训练 瓷砖铺放
    Java实现 蓝桥杯VIP 算法训练 瓷砖铺放
    Java实现 蓝桥杯VIP 算法训练 集合运算
  • 原文地址:https://www.cnblogs.com/brolanda/p/4522722.html
Copyright © 2011-2022 走看看