Mysql 选择并删除过期的重复记录?

Mysql 选择并删除过期的重复记录?,mysql,duplicates,sql-delete,Mysql,Duplicates,Sql Delete,我有一个分级db,如下所示: StudentId | SubjectCode | Grade | DateApproved Student1 | SUBJ1234 | - | 30-3-2012<br/> Student1 | SUBJ1234 | 2.25 | 31-3-2012<br/> Student1 | SUBJ45678 | 2.00 | 31-2012 如果你注意到的话,有一个过时的副本,它有一个空白等级,表示为- 我想从数据库中选择所有具有重复但较新

我有一个分级db,如下所示:

StudentId | SubjectCode | Grade | DateApproved

Student1 | SUBJ1234 | - | 30-3-2012<br/>
Student1 | SUBJ1234 | 2.25 | 31-3-2012<br/>
Student1 | SUBJ45678 | 2.00 | 31-2012 
如果你注意到的话,有一个过时的副本,它有一个空白等级,表示为-

我想从数据库中选择所有具有重复但较新项目的空白成绩,以便删除它们

如何在SQL MySql 5.5中做到这一点?

您可以尝试以下方法:

SELECT * 
   FROM yourTableName as t1 
   WHERE t1.Grade = "-" 
      AND EXISTS (SELECT * 
                     FROM yourTableName as t2 
                     WHERE t1.StudentId = t2.StudentId 
                         AND t1.SubjectCode = t2.SubjectCode 
                         AND t1.DateApproved < t2.DateApproved
                 )
代码基本上从表中选择所有字段,这些字段的成绩设置为-并且有一条记录具有相同的StudentId和SubjectCode以及更高的更新日期

编辑:如果您希望新记录的定义等级不是-,添加:和t2。等级!='-'在内部查询的最后一个条件之后,在结束括号之前。

您尝试了什么?