使用单个 SQL 查询对记录重新排序
在带有“位置”字段以对其外观进行排序的食品表中,单个SQL 查询可以基于对单个记录的更改来更新多个记录。这对于重新排序特定列表中的项目特别有用。
假设我们有一个像这样的表这个:
id | 列表ID | 名称 | 位置 |
---|---|---|---|
1 | 1 | 奶酪 | 0 |
2 | 1 | 薯条 | 1 |
3 | 1 | 培根 | 2 |
4 | 1 | 苹果 | 3 |
5 | 1 | 梨 | 4 |
6 | 1 | 馅饼 | 5 |
至将梨移到薯片之前,我们可以将它们之间的所有项目的位置增加 1。
但是,大多数解决方案都涉及多个查询,这可能效率低下。相反,可以使用单个查询对记录重新排序:
UPDATE my_table SET position = position CASE WHEN name = 'pears' THEN -3 ELSE 0 END WHERE listID = 1 AND position BETWEEN 1 AND 4;
此公式确保梨移动到位置 1,并且梨和薯片之间的所有项目都会相应递增。
要重新排序任何项目,只需简单地将 'pears' 替换为要移动的项目的名称,并根据需要调整差异。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3