• 获取各科最高两个成绩的解决方案。


    问题:

    用一条sql语句获取表learn中的每科最高的两个成绩,

    learn(countid,grade,id);

    countid课程号,

    grade成绩,

    id学号,

    下面是一种解决方法:

    select t1.countid,t1.grade

    from learn as t1

    where t1.grade>=

    (     select max(t2.grade) from learn as t2

         where t1.countid=t2.countid and t2.grade <>

              (     select max(t3.grade) from learn as t3

                    where t1.countid=t2.countid and t2.countid=t3.countid

    ))

    group by countid , grade;

    相关子查询的相关知识:

    在sql语言中,一个select-from-where语句称为一个查询块,将一个查询块嵌套在另一个查询块

    的where子句或having短语的条件中的查询称为嵌套子查询。如果子查询的条件依赖于父查询这

    类查询称为相关子查询,整个语句称为相关嵌套查询。

    相关子查询的执行过程;

    1,从外层查询中取出一个元组,将元组相关列的值传给内层查询。

    2,执行内层查询,得到值来代替内层查询,得到外层查询。

    3,执行外部查询。

    4,然后外层查询取出下一个元组重复做步骤1-3,直到外层的元组全部处理完毕。

  • 相关阅读:
    232. Implement Queue using Stacks
    231. Power of Two
    n&(n-1)位运算的妙用
    230. Kth Smallest Element in a BST
    关于UNIX的exec函数
    Go语言的各种Print函数
    Go语言的接口interface、struct和组合、继承
    Go语言知识点笔记
    Ubuntu自定义终端窗口位置
    Python的类变量和成员变量、类静态方法和类成员方法
  • 原文地址:https://www.cnblogs.com/xingyayang/p/1349642.html
Copyright © 2020-2023  润新知