首页 > 数据库技术 > 详细

SQL删除重复行和查询所有大于某成绩的语句分析

时间:2014-09-29 21:55:02      阅读:597      评论:0      收藏:0      [点我收藏+]

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

下面是表

bubuko.com,布布扣

分析,查询每门课程都大于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消除重复行)。

 

 

 

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

bubuko.com,布布扣

做这道题我们看到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为条件,不在次条件的语句进行删除,最后得到自己理想的表了。

 

SQL删除重复行和查询所有大于某成绩的语句分析

原文:http://www.cnblogs.com/jiaxuekai/p/4000993.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!