如何删除列为空但我要删除的记录是另一个表的一部分的记录。
例如,我想删除一个没有学生的课程。课程表通过course_id与学生链接
DELETE COURSE_ID
FROM COURSE
INNER JOIN STUDENT
ON COURSE.COURSE_ID = STUDENT.COURSE_ID
WHERE STUDENT_ID IS NULL;
答案 0 :(得分:2)
对于您的问题,如前所述,您可以使用EXISTS
:
DELETE FROM COURSE
WHERE EXISTS (SELECT 1
FROM STUDENT
WHERE COURSE.COURSE_ID = STUDENT.COURSE_ID AND
STUDENT_ID IS NULL
);
但是,我怀疑您想从COURSE
删除行中没有STUDENT
的行。为此,您可以使用NOT EXISTS
:
DELETE FROM COURSE
WHERE NOT EXISTS (SELECT 1
FROM STUDENT
WHERE COURSE.COURSE_ID = STUDENT.COURSE_ID
);
答案 1 :(得分:0)
也许您只需要一个子查询,以供其他表中的引用(如果存在)。
DELETE
FROM COURSE
WHERE COURSE.COURSE_ID IN (SELECT
COURSE_ID FROM STUDENT where student_id IS
NULL)