如何使用mySQL中的group by删除数据库中的记录

29 浏览
0 Comments

如何使用mySQL中的group by删除数据库中的记录

这个问题已经有了答案:

可能是重复的:

SQL Delete:无法在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”

我该如何删除这些记录?

admin 更改状态以发布 2023年5月22日
0
0 Comments

其中一种最简单的方法是从您的第一个查询创建一个临时表,然后在第二个语句中删除不在临时表中的所有课程。

0
0 Comments

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

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

0