我有一个带有 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)
答案 0 :(得分:1)
为避免在DELETE上出现“两次指定”错误,请将内部查询包装在另一个“匿名”内部查询中(此处命名为x):
Detached entity \Entity\\SurveyDatabaseAnswer@00000000204763e700007fdd1d66d304 cannot be removed