2012-04-09 14 views
-1

私はグレーディングデシベルを持っているが、次のようになります。あなたが気づく場合古い重複レコードを選択して削除しますか?

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)ではどうすればよいですか?

+6

**あなたが試したことはありますか?** – gdoron

答えて

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

EDIT:Grade-以外)が定義されている場合は、内側のクエリの最後の条件の後に、閉じ括弧の前に、AND t2.Grade != '-'を追加します。

関連する問題