在我的表中,一个字段“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;
答案 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
也可能是一种选择。