Например, мне нужно автоматически / случайно назначить «нового» Лидера, чтобы вести учеников (выберите только 1 ученика из каждого типа), и ежедневно предположить, что в таблице Лидеров всего 10 лидеров.
Но я получаю неправильный результат, используя приведенный ниже запрос, он в первый раз обновит всех учащихся с одинаковым идентификатором лидера.
UPDATE students
SET student_status = 'assigned'
, leader_id = 'abc'
WHERE student_id IN
( SELECT student_id
FROM
( SELECT *
FROM students
) s
WHERE student_status = 'New'
GROUP
BY type_id)
Мой ожидаемый результат похож на приведенный ниже запрос, но я не хочу запускать другую логику для генерации случайного идентификатора student_id:
UPDATE students
SET student_status='assigned', leader_id='abc'
WHERE student_id IN ('T0123','S0222','T7777','S8888')
student_id | type_id | leader_id | student_status
-----------+---------+-----------+---------------
T0121 | Type 1 | xyz | assigned
T0122 | Type 1 | | new
T0123 | Type 1 | | new
S0221 | Type 2 | | new
S0222 | Type 2 | | new
S0223 | Type 2 | xyz | assigned
T7777 | Type 3 | | new
T7779 | Type 3 | xyz | assigned
S8888 | Type 4 | xyz | assigned
S8887 | Type 4 | | new
S8886 | Type 4 | | new