小编典典

如何使用group by [删除]在MySQL中删除数据库中的记录

sql

这个问题已经在这里有了答案

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”进行更新

我该如何删除这些记录?


阅读 217

收藏
2021-04-22

共1个答案

小编典典

请在以下链接中查看答案。它将解决您的问题:

基本上,您不能从(修改)与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
                        )
2021-04-22