我有这张桌子:
SELECT * FROM items
id | item | position
---|-----------|----------
1 | USB cable | 0
2 | SD card | 4
3 | Mouse | 2
4 | Keyboard | 0
5 | Monitor | 3
对该表进行排序得到以下结果:
SELECT * FROM items ORDER BY position
id | item | position
---|-----------|----------
4 | Keyboard | 0
1 | USB cable | 0
3 | Mouse | 2
5 | Monitor | 3
2 | SD card | 4
现在我想更新表格并将订单保存在位置列中:
SELECT * FROM items
id | item | position
---|-----------|----------
4 | Keyboard | 1
1 | USB cable | 2
3 | Mouse | 3
5 | Monitor | 4
2 | SD card | 5
这可以通过单个查询来完成,还是我必须手动遍历所有行并进行手动更新?
如果订单没有完全定义(例如上面的 USB 电缆和键盘),我只是随意决定了订单。