MySQL删除重复但保留特定的ID

时间:2019-04-01 14:13:36

标签: mysql

我有一个带有 id articleID categoryID 的表格。 一个articleID可以有多个categoryID。

现在,我想删除具有 categoryID = 3049 的每个条目,如果还有另一个具有 categoryID 的相同 articleID 条目的话

所以我进行了此查询,但它给了我一个错误:

  

#1093-表's_articles_categories'被指定两次,既作为'DELETE'的目标又作为数据的单独来源

   DELETE FROM s_articles_categories
    WHERE categoryID = 3049 AND articleID IN
        (
        SELECT articleID
        FROM s_articles_categories
        WHERE articleID IN
            (
            SELECT articleID
            FROM s_articles_categories
            GROUP BY articleID
            HAVING count(articleID) > 1
            )
        AND categoryID != 3049
        )

如何更改此查询?

我也尝试过这个,但是它给了我同样的错误

DELETE FROM s_articles_categories as t1
WHERE id in (SELECT t1.id FROM `s_articles_categories` as t1
JOIN `s_articles_categories` AS t2 on t1.articleID = t2.articleID
WHERE t1.categoryID = 3049 and t2.categoryID != 3049)

1 个答案:

答案 0 :(得分:1)

为避免在DELETE上出现“两次指定”错误,请将内部查询包装在另一个“匿名”内部查询中(此处命名为x):

Detached entity \Entity\\SurveyDatabaseAnswer@00000000204763e700007fdd1d66d304 cannot be removed