使用单个 SQL 查询对记录重新排序
在带有“位置”字段来排序其外观的食品表中,单个SQL 查询可以基于对单个记录的更改来更新多个记录。这对于重新排序特定列表中的项目特别有用。
假设我们有一个像这样的表:
id | listID | name | position |
---|---|---|---|
1 | 1 | cheese | 0 |
2 | 1 | chips | 1 |
3 | 1 | bacon | 2 |
4 | 1 | apples | 3 |
5 | 1 | pears | 4 |
6 | 1 | pie | 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”替换为要移动的项目的名称,并根据需要调整差异。
以上是如何使用单个 SQL 查询对表中的记录重新排序?的详细内容。更多信息请关注PHP中文网其他相关文章!