2014-02-14 64 views
1

我试图根据其他比如我有一个表叫pd_course_mstr日期有以下字段删除上加入

course_id 
start_dt 

然后我有另一个表称为pd_eval_dtl从表中删除所有记录它具有以下字段:

course_id 
eval_question 

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

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' 

中的eval问题,所以,我试图将其更改为

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

我不知道我在做什么错。

回答

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') 
+4

应该是真的+2,1回答正确的第一次,和1对使用文化不变的日期格式的字符串字面日期。 – GarethD

+1

这工作完美,我想尝试其他的解决方案,但这工作,所以没有什么可以尝试他们。 –

+2

@GarethD你可以借我的。 – Miller

0

使用where in

delete pd_eval_dtl 
where course_id in 
     (select course_id 
     from pd_course_mstr 
     where start_dt='02/17/2014' 
     ) 
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' 
0
DELETE FROM SECONDTABLE WHERE COURSE_iD IN (SELECT COURSE_iD FROM FIRST TABLE WHERE START_dT IS > REQUIRED DATE) 
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') 
+1

这篇文章可以使用一个解释来更有效地帮助OP。 – Sam