0

在我的表中,一个字段“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中实现这个?

笔记 :

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

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

1 回答 1

1

如果订单与time(或id)相关,这可能会起作用。

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

上面的答案是借自:update 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

于 2012-06-28T09:44:55.430 回答