【发布时间】:2020-07-21 12:45:06
【问题描述】:
我有一个表格,它有一个位置 pos 列来指示项目应在 UI 中显示的顺序:
| 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 |
(...)
当用户重新排列列表时,我会得到一个有序的 ID 列表作为数组:
(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;
有没有更好的方法?
【问题讨论】:
标签: sql arrays postgresql sql-update