-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 

お気付きかもしれませんが、成績が空白の古い重複があります ( で表され"-"ます)。

重複しているが最近の項目があるデータベースからすべての空白の成績を選択したいので、それらを削除できます。

でこれを行うにはどうすればよいSQL (MySql 5.5)ですか?

4

1 に答える 1

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
                 )

コードは基本的に、グレードが設定されているテーブルからすべてのフィールドを選択し、同じおよびより高い (新しい)-を持つレコードがあります。StudentIdSubjectCodeDateApproved

Grade編集:「新しい」レコードに(以外の)定義を持たせたい場合は、内部クエリの最後の条件の後、閉じ括弧の前に-追加します。AND t2.Grade != '-'

于 2012-04-09T07:34:51.613 に答える