Используя одну таблицу USERS
, я хотел бы обновить 20 верхних значений (на основе столбцов marks
) столбца STATUS
который в настоящее время равен NULL для "Ожидание".
Возможно ли это с помощью Update
(только для того, чтобы повлиять на 20 лучших пользователей, а остальное - на "N/A")?
Прямо сейчас я могу только думать о
Update
STATUS
from
USERS
where
STATUS is NULL
group by
MARKS desc
LIMIT
20;
Но я получаю сообщение об ошибке
РЕДАКТИРОВАТЬ:-
UPDATE
student
SET
status = 'Waiting'
where
branch in (
select
branch
from
(
select
branch
from
student
where
STATUS is NULL
order by
CGPA DESC
limit
1, 2
) temp
)
Я пробовал это, но он обновляет все строки не только из двух, которые я хочу (верхние 2, отсортированные по меткам)
http://sqlfiddle.com/#!9/a850e/1
UPDATE users u
JOIN (
SELECT id
FROM users
WHERE 'status' IS NULL
ORDER BY marks desc
LIMIT 20
) j
ON u.id = j.id
SET 'status'='WAITING';
Попробуй это.
UPDATE USERS SET status = 'Waiting' where ID in (select ID from USERS where STATUS is NULL order by MARKS DESC limit 1,20)