У меня есть таблица, в которой есть столбец позиции pos
для указания порядка отображения элементов в пользовательском интерфейсе:
| list_has_task |
|------------------------------------------|
| list_id (fk) | task_id (fk) | pos | meta |
| ------------ | ------------ | --- | ---- |
| 6969 | 1001 | 1 | abcd |
| 6969 | 1002 | 2 | efgh |
| 6969 | 1003 | 3 | ijkl |
| 6969 | 1004 | 4 | mnop |
| 6969 | 1005 | 5 | qrst |
(...)
Когда пользователь переупорядочивает список, я получаю упорядоченный список Идентификаторы в виде массива:
(1004,1003,1002,1005,1001)
Я хочу обновить эти строки в этом порядке.
Вот что у меня есть:
BEGIN;
UPDATE list_has_task SET pos = 1 WHERE list_id = 6969 AND task_id = 1004;
UPDATE list_has_task SET pos = 2 WHERE list_id = 6969 AND task_id = 1003;
UPDATE list_has_task SET pos = 3 WHERE list_id = 6969 AND task_id = 1002;
UPDATE list_has_task SET pos = 4 WHERE list_id = 6969 AND task_id = 1005;
UPDATE list_has_task SET pos = 5 WHERE list_id = 6969 AND task_id = 1001;
COMMIT;
Есть ли Есть ли лучший способ сделать это?