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

时间: 2024-10-10 05:52:17

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

sql 删除重复行

1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count (peopleId) > 1) 2.删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 delete from people where peopleId in (selec

SQL删除重复数据方法

例如: id           name         value 1               a                 pp 2               a                 pp 3               b                 iii 4               b                 pp 5               b                 pp 6               c           

【转】SQL删除重复数据方法,留着备用

感谢孙潇楠前辈的总结,地址http://www.cnblogs.com/sunxiaonan/archive/2009/11/24/1609439.html 例如: id           name         value 1               a                 pp 2               a                 pp 3               b                 iii 4               b      

【转】SQL删除重复记录,只保留其中一条

SQL:删除重复数据,只保留一条用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2.删除表中多余的重复记录,重复记录是根据单个字段(p

SQL 删除重复记录,并保留其中一条

SQL:删除重复数据,只保留一条用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2.删除表中多余的重复记录,重复记录是根据单个字段(p

sql删除重复数据

--删除重复数据delete from PMS_Contract_LeasedRoom  where LeasedRoomId not in(select max(LeasedRoomId) from PMS_Contract_LeasedRoom group by ContractCode,RoomCode) --having count(*)>1)

sql删除重复记录

用SQL语句,删除掉重复项只保留一条 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用. 所有的合计函数如下表所示: MIN返回一个给定列中最小的数值MAX返回一个给定列中最大的数值SUM返回一个给定列中所有数值的总和AVG返回一个给定列中所有数值的平均值COUNT返回一个给定列中所有数值的个数COUNT(*)返回一个表中的行数假设我们将从employee表中搜索工资最高的列,可以使用以下的SQL语句: SELECT max(salary), dept FR

SQL 删除重复的电子邮箱

编写一个 SQL 查询,来删除 Person 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个. +----+------------------+ | Id | Email | +----+------------------+ | 1 | john@example.com | | 2 | bob@example.com | | 3 | john@example.com | +----+------------------+ Id 是这个表的主键. 例如,在运行你的查询语句之后,

SQL删除重复数据只保留一条

用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2.删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有r