【问题标题】:Select and delete outdated duplicate records?选择并删除过期的重复记录?
【发布时间】:2012-04-09 02:55:21
【问题描述】:

我有一个评分数据库,如下所示:

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 中选择所有具有重复但更近期项目的空白成绩,以便我可以删除它们。

如何在SQL (MySql 5.5) 中执行此操作?

【问题讨论】:

  • 你试过什么?

标签: mysql duplicates sql-delete


【解决方案1】:

你可以试试这个:

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
                 )

代码基本上从您的表中选择所有字段,这些字段的等级设置为-,并且有一条记录具有相同的StudentIdSubjectCode 以及更高(更新)DateApproved

编辑:如果您希望“新”记录具有定义的 Grade- 除外),请在内部查询的最后一个条件之后、右括号之前添加:AND t2.Grade != '-'

【讨论】:

    猜你喜欢
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多