2014-03-25 47 views
0

我有如下表尋找辦法從非現有數據刪除片段

report_pre { id, date} 
report_sections {id,report,data} 

我想下面的SQL代碼來刪除表碎片: -

DELETE 
FROM 
report_sections 
WHERE 
report=ANY(
    SELECT 
     rs.report 
    FROM 
     report_sections rs 
    WHERE 
     NOT EXISTS (
      SELECT 
       rp.id 
      FROM 
       report_pre rp 
      WHERE 
       rp.id=rs.report 
     ) 
) 

但我得到的消息:

#1093 - 無法在FROM子句中指定目標表'report_sections'進行更新

我在做什麼錯? 我嘗試了它已經不同的方式,但迄今沒有找到解決方案。 請幫忙。

回答

1

這可能會做你想要什麼:

DELETE rs 
    FROM report_sections rs LEFT JOIN 
     report_pre rp 
     on rp.id = rs.report 
    WHERE rp.id IS NULL; 

這將刪除所有report_sections行沒有匹配的紀錄report_pre

我認爲您的原始郵件中的錯誤信息非常清晰。您可以使用額外的子查詢層來解決此問題。但是,瞭解join方法來解決這個問題很有趣。

+0

thx尋求幫助。有效 :) –