更新一个字段,以便订单值连续

时间:2012-06-28 08:55:07

标签: php mysql

在我的表中,一个字段“ord”包含特定组的值的顺序。

tbl_test,字段为Group,time,ord,name

示例条目

id       Group time                      ord          name
----------------------------------------------------------------
1        1     1340865990                1            john
2        1     1340865880                2            jos
3        1     1340867830                3            mery
4        1     1340867830                4            bill
5        1     1340867830                5            stiev
6        1     1340867830                6            tom
7        2     1340867830                1            test
8        3     1340867830                2            john

如果我从组1中删除了一组值,例如我删除了“mery”和“tom”,则“ord”字段必须具有其余项目的更新订单值

id       Group time                      ord          name
----------------------------------------------------------------
1        1     1340865990                1            john
2        1     1340865880                2            jos
4        1     1340867830                3            bill
5        1     1340867830                4            stiev

删除的项目可以是任何订单。要删除该项目,用户将提供ID和组的列表。

我如何在mysql中实现它?

注意:

要在删除单个条目时更新ord,我使用以下查询:

SET @a = 3;
UPDATE tbl_test 
SET ord = 5,time = 1337690755 
WHERE Group = 1 AND id = 6;

1 个答案:

答案 0 :(得分:1)

如果订单与time(或id)相关,则可能有效。

SET @order:=0;
UPDATE tbl_test
SET ord=@order:=@order+1
WHERE group=1
ORDER BY time, id

上面的答案来自:updating columns with a sequence number mysql

Mysql Insert Order Number By VARCHAR Field

找到替代方法
SET @order:=0;
UPDATE 
SET ord=@order:=@order + 1
FROM tbl_test
ORDER BY time, id

如果未使用AUTO_INCREMENT列,则重置id ord也可能是一种选择。