这个问题已经在这里有了答案 :
9年前关闭。
可能重复: SQL删除:无法在FROM子句中指定要更新的目标表
我只有一张表(称此表为TAB),代表大学考试。我具有以下属性:CourseName,CourseCode和year。我要删除基数小于100的所有课程。如果键入
select CourseName from TAB group by CourseName having count(CourseName) < 100;
我有确切的结果。但是,如果要删除此条目,请尝试
delete from TAB where CourseName not in (select CourseName from TAB group by CourseName having count(CourseName) > 100);
但系统返回错误:
1093您不能在FROM子句中指定目标表“ TAB”进行更新
我该如何删除这些记录?
请在以下链接中查看答案。它将解决您的问题:
基本上,您不能从(修改)与SELECT中使用的表相同的表中删除。该页面记录了多种解决方法。
通过使您的嵌套select临时表可以工作以下内容。
select
delete from TAB where CourseName not in (select temp.CourseName from (select t.CourseName from TAB t group by t.CourseName having count(t.CourseName) > 100 ) as temp )