我在SQLite数据库中有一个表,如下所示:
+-------+------------+---------------+-------+------------+
| ROWID | student_id | qualification | grade | date_stamp |
+-------+------------+---------------+-------+------------+
| 1 | 000001 | Mathematics | A | 2022-04-01 |
| 2 | 000002 | NULL | NULL | 2022-03-01 |
| 3 | 000003 | Physics | B | 2022-03-01 |
| 4 | 000003 | NULL | NULL | 2022-02-01 |
+-------+------------+---------------+-------+------------+
这是一个学生考试成绩表,如果学生在某一科目上具有资格,则在表中显示为ROW#1。如果学生没有资格证书,则在表中显示为ROW#2。
ROW#3&4指的是一名学生(id 000003),他以前在数据库中没有资格证书,但现在物理成绩为B。我需要删除ROW#4,因为它现在有了一个限定,NULL值不再合适。学生000002的ROW#2应不受影响。
date_stamp列只显示该记录上次更新的时间。
感谢任何帮助,提前表示感谢。
您可以尝试使用现有逻辑进行删除:
DELETE
FROM yourTable
WHERE qualification IS NULL AND
EXISTS (
SELECT 1
FROM yourTable t
WHERE t.student_id = yourTable.student_id AND
t.qualification IS NOT NULL AND
t.date_stamp > yourTable.date_stamp
);