Зачислить в студенты пять человек с наивысшим средним баллом - MySQL

Узнай цену своей работы

Формулировка задачи:

Всем добрый день! Помогите, пожалуйста, написать правильный запрос в MySQL. Задача следующая - есть база абитуриентов. Нужно из всей этой базы зачислить в студенты пять человек с наивысшим средним баллом. Для этого надо в колонку isEnter вписать значение 1 вместо 0. Я смог написать вот такой правильно работающий запрос - он выводит 5 лучших абитуриентов (колонка GPA - это средний балл).
SELECT * FROM university.abiturients ORDER BY GPA DESC LIMIT 5;
Проблема в том, что я теперь не знаю, как в колонку isEnter вписать значение 1 вместо 0. Я долго гуглил, но всё что смог, это написать вот такие два неработающих запроса:
UPDATE abiturients SET `IsInSheet`=1 WHERE 
(SELECT * FROM university.abiturients ORDER BY GPA DESC LIMIT 5);
UPDATE university.abiturients SET `isEnter`=1 
WHERE GPA = (SELECT GPA FROM university.abiturients ORDER BY GPA DESC LIMIT 5);
Помогите, пожалуйста!!! Заранее благодарю!

Решение задачи: «Зачислить в студенты пять человек с наивысшим средним баллом»

textual
Листинг программы
// получаем id абитуриентов в наивысшим средним баллом
$sql_select = "SELECT id FROM university.abiturients ORDER BY GPA DESC LIMIT 5";
$result = $mysqli->query($sql_select);
// составляем массив с id абитуриентов
$arr_id = array();
while ($obj = $result->fetch_object()) {
        $arr_id[] = $obj->id;
}
// превращаем массив в строку типа "4,7,3,6,13"
$ids = implode(",", $arr_id);
// превращаем в студентов тех, у кого id in (4,7,3,6,13);
$sql_update = "UPDATE university.abiturients SET `IsInSheet`=1 WHERE id in ($ids)";
$mysqli->query($sql_update);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5
Похожие ответы