Удалить из таблицы с помощью подзапроса из другой таблицы

#sql #subquery #sql-delete

#sql #подзапрос #sql-удалить

Вопрос:

Таблицы Мне нужно удалить из таблицы students всех студентов, которые получили меньше среднего процента правильных ответов в таблице exam_results. Это должно быть сделано с помощью подзапросов.

До сих пор я пытался:

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

Это возвращает: ERROR 1111: Invalid use of group function

Почему это недопустимое использование функции group? Чего мне не хватает или что с этим не так?

Любая помощь очень ценится! Спасибо!

Ответ №1:

Вам нужно найти ученика 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. поэтому, пожалуйста, отметьте базу данных и ее версию, над которой вы работаете.