Php 重新索引项目的Mysql查询
我有一个如下表,它有一个ID和项目名称,顺序和类型Php 重新索引项目的Mysql查询,php,mysql,Php,Mysql,我有一个如下表,它有一个ID和项目名称,顺序和类型 +--------+----------------+-----------+---------+ | ID | ITEM | ORDER | TYPE | +--------+----------------+-----------+---------+ | 1 | Banana | 2 | Fruit | +--------+----
+--------+----------------+-----------+---------+
| ID | ITEM | ORDER | TYPE |
+--------+----------------+-----------+---------+
| 1 | Banana | 2 | Fruit |
+--------+----------------+-----------+---------+
| 2 | Apple | 1 | Fruit |
+--------+----------------+-----------+---------+
| 3 | Orange | 4 | Fruit |
+--------+----------------+-----------+---------+
| 4 | Lemon | 3 | Fruit |
+--------+----------------+-----------+---------+
如果我删除,比如说Lemon
,顺序将是1,2,4。是否有一种方法来重新索引剩余的项目以获得以下结果
+--------+----------------+-----------+---------+
| ID | ITEM | ORDER | TYPE |
+--------+----------------+-----------+---------+
| 1 | Banana | 2 | Fruit |
+--------+----------------+-----------+---------+
| 2 | Apple | 1 | Fruit |
+--------+----------------+-----------+---------+
| 3 | Orange | 3 | Fruit |
+--------+----------------+-----------+---------+
没有办法完全自动完成这项工作,但这相当简单。假设ORDER
不是唯一的,则更容易,但如果是唯一的,则必须首先检索“Lemon”的ORDER
。那么,只要做:
UPDATE Fruit SET ORDER = ORDER - 1 WHERE ORDER > ?
其中?
是Lemon的订单
假设ORDER
不是唯一的,那么您可以事先执行此查询,但您可以在删除Lemon
行之前加入选择Lemon的ORDER以替换?
,检查其ORDER
列值
然后表演
UPDATE tbl SET `ORDER` = `ORDER` - 1 WHERE `ORDER` > value_lemon_had
id是唯一的id吗?如果是这样的话,我强烈建议不要更改它,尤其是在表中的所有项目上。Id是唯一的并且是自动的。我只需要重新索引订单好吧,我看错了。随身携带:-)