zoukankan      html  css  js  c++  java
  • SQL删除重复行和查询所有大于某成绩的语句分析

    有这样一个题,用一条SQL语句 查询出每门课都大于80分的学生姓名。

    下面是表

    分析,查询每门课程都大于80的学生。SELECT DISTINCT name FROM dbo.student WHERE fenshu<=80查询出来的结果是李四王五张三都有。

    小于等于80的语句SELECT name FROM dbo.student WHERE fenshu<=80 只有张三一个。

    这个是重复的,值得利用,用not in(不在次语句中的)语句将两句拼写到一块如下:

    SELECT DISTINCT name FROM dbo.student WHERE name NOT in(
    SELECT name FROM dbo.student WHERE fenshu<=80)

    现在只剩下想要的结果了(注意查询出来的结果是三个王五,需要用distinct消除重复行)。

    第二个题:删除除了自动编号不同,其他都相同的学生冗余信息,表如下:

    做这道题我们看到ID是不一样的,其他都一样,那么需要分组,语句:SELECT MAX(ID) FROM dbo.student1 GROUP BY grade,kecheng,name,X_ID,course进行分组,并获得最大的ID。在group by语句后的字段必须都一样才会产生一组。

    分组后进行删除语句

    DELETE FROM dbo.student1 WHERE ID NOT IN(
    SELECT MAX(ID) FROM dbo.student1 GROUP BY grade,kecheng,name,X_ID,course)  

    删除的时候通过Id为条件,不在次条件的语句进行删除,最后得到自己理想的表了。

  • 相关阅读:
    D. Constructing the Array
    B. Navigation System
    B. Dreamoon Likes Sequences
    A. Linova and Kingdom
    G. Special Permutation
    B. Xenia and Colorful Gems
    Firetrucks Are Red
    java getInstance()的使用
    java 静态代理和动态代理
    java 类加载机制和反射机制
  • 原文地址:https://www.cnblogs.com/jiaxuekai/p/4000993.html
Copyright © 2011-2022 走看看