从连接表中删除

时间:2014-02-14 19:39:25

标签: sql sql-server

我正在尝试根据另一个记录从表中删除所有记录,例如我有一个名为pd_course_mstr的表,其中包含以下字段

course_id
start_dt

然后我有另一个名为pd_eval_dtl的表,其中包含以下字段

course_id
eval_question

目标是删除所有具有特定日期的eval问题。我能够使用SQL通过使用以下语句选择所有eval问题

SELECT * 
FROM pd_eval_dtl AS eval JOIN pd_course_mstr AS course 
    ON eval.course_id = course.course_id 
WHERE course.start_dt='02/17/2014'

所以我试着把它改成

DELETE 
FROM pd_eval_dtl JOIN pd_course_mstr 
    ON pd_eval_dtl.course_id = pd_course_mstr.course_id 
WHERE pd_course_mstr.start_dt='02/17/2014'

但它一直说JOIN

附近有语法错误

我不知道我做错了什么。

5 个答案:

答案 0 :(得分:6)

语法是

DELETE FROM eval
FROM   pd_eval_dtl AS eval
       INNER JOIN pd_course_mstr AS course
         ON eval.course_id = course.course_id
WHERE  ( course.start_dt = '20140217' ) 

答案 1 :(得分:1)

试试这个。

DELETE ped
FROM pd_eval_dtl ped 
    INNER JOIN pd_course_mstr pcm ON ped.course_id = pcm.course_id 
WHERE pcm.start_dt='20140217'

答案 2 :(得分:1)

DELETE FROM pd_eval_dtl
WHERE EXISTS 
             (SELECT 1 
              FROM pd_course_mstr
              WHERE course_id  = pd_eval_dtl.course_id
              AND start_dt='02/17/2014')

答案 3 :(得分:0)

使用where in

delete pd_eval_dtl
where  course_id in
       ( select course_id
         from   pd_course_mstr
         where  start_dt='02/17/2014'
       )

答案 4 :(得分:0)

 DELETE FROM SECONDTABLE WHERE COURSE_iD IN (SELECT COURSE_iD FROM FIRST TABLE WHERE START_dT IS > REQUIRED DATE)