首页 >数据库 >mysql教程 >如何使用单个 SQL 查询对表中的记录重新排序?

如何使用单个 SQL 查询对表中的记录重新排序?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-06 04:23:021041浏览

How to Reorder Records in a Table with a Single SQL Query?

使用单个 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn