2014-02-14 94 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