使用来自另一个 table 的子查询从 table 中删除

Delete from table using subquery from another table

Tables 我需要从学生 table 中删除所有在 exam_results table 上的正确答案低于平均百分比的学生。它必须使用子查询来完成。

到目前为止我已经尝试过:

DELETE FROM students
WHERE id IN (SELECT student_id FROM exam_results WHERE percentage < AVG(percentage));

这个returns:ERROR 1111: Invalid use of group function

为什么这是对群组功能的无效使用? 我错过了什么或有什么问题吗?

非常感谢任何帮助!谢谢!

您需要按如下方式找到sub-query中的学生:

DELETE FROM students
 WHERE id IN 
   (SELECT student_id 
      FROM exam_results 
     WHERE percentage < (select AVG(percentage) from exam_results);

您也可以使用 analytical function 但这取决于您的 MySql 版本。所以请标记您正在使用的数据库及其版本。