寻找从现有数据中删除片段的方法

时间:2014-03-25 21:00:55

标签: mysql sql database mariadb

我有以下表格

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 - 您无法指定目标表' report_sections'用于FROM子句中的更新

我做错了什么? 我已经尝试过不同的方法了,但到目前为止找不到解决办法。 请帮忙。

1 个答案:

答案 0 :(得分: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方法来解决这个问题很有趣。

相关问题