zoukankan      html  css  js  c++  java
  • SQL表中的自连接定义与用法示例

    一个表与自身进行连接,称为自连接

    问题的提出:一个网友提出这样一个SQL题目,说自己想了很久没解决,我一看,这不是很简单吗
    可是自己在查询分析器调试了半天原来问题并不是那不简单


    有一个学生表,里面有 学号 功课编号
    学生成绩三个字段.用一个SQL查询语句得出每门功课成绩最好的前两名

    学号  功课编号     学生成绩
     1          1             99
     2          1             98
     3          1             100
     4          2             88
     5          2             87
     6          2             88
     7          3             99
     8          3             88
     9          3             100

    解决方法

    SELECT DISTINCT 学生表1.*
    FROM 学生表 学生表1 INNER JOIN
          学生表 学生表2 ON 学生表1.学号 IN
              (SELECT TOP 2 学生表.学号
             FROM 学生表
             WHERE 学生表.功课编号 = 学生表1.功课编号
             ORDER BY 学生成绩 DESC)

    查询结果
    学号  功课编号     学生成绩
     1          1             99
     2          1             98
     4          2             88
     6          2             88
     7          3             99
     9          3             100



    同样的问题还有

    查找不同课程成绩相同的学生的学号、课程号、学生成绩。

    同时:以上sql语句还可以优化下:

    SELECT 学生表1.* 
    FROM 学生表 学生表1 WHERE 学生表1.学号 IN 
    (SELECT TOP 2 学生表.学号 
    FROM 学生表 
    WHERE 学生表.功课编号 = 学生表1.功课编号 
    ORDER BY 学生成绩 DESC)
      
  • 相关阅读:
    react-绑定this并传参的三种方式
    CSS中使用文本阴影与元素阴影
    react-native构建基本页面2---轮播图+九宫格
    HTML 事件属性
    博客园文章版权声明(js自动生成)
    js 字符串方法 和 数组方法总览
    软工期末各类图复习笔记
    AES算法描述
    DQL查询语言-基础查询、条件查询、排序查询、多表连接查询、子查询、分页查询和联合查询
    Python-模块、包和库
  • 原文地址:https://www.cnblogs.com/zhanghai/p/4449895.html
Copyright © 2011-2022 走看看