目标是按照每个txtShopCode来更新字段sort类似自增,但是有条件。比如txtShopCode
为1我更新sort字段他有三条记录,我从1到3更新完成,txtShopCode为2的时候更新sort
字段有5条记录,更新的时候要重新从1开始,不懂的再给你讲解一下。望大神指导
我理解你的意思是相同txtShopCode值的记录要按照从1递增更新sort字段值?
如果这样的话,也简单,但是为了方便更新执行,需要增加一个辅助更新字段,名称:num,更新后可删除该字段
假定你的表名为 tname
alter table tname add num INT NOT NULL AUTO_INCREMENT;----增加递增字段
update tname set sort=1 where 1=1;----先将所有sort字段赋初始值1;
update tname m inner join
(select a.txtGuid guid,
(select count(*) from tname where num<=a.num and txtShopCode=a.txtShopCode) sortValue from tname a) n
on m.txtGuid=n.guid
set m.sort=n.sortValue;
alert table tname drop column num;----删除新增字段num
什么数据库,看着现有的数据表结构,建的也不够合理,预期单独写sql执行,不如取出数据,用程序来操作,貌似没任何难度,性能还高。可参考下。
数据库字段更新,你要按照数据不同的类型,要求进行排序。比如你按照某个字段排序就能行。 为了你的积分币来的。希望能帮到你。
1,建议做分表处理,假设你的txtShopCode是唯一指向标识,将sort类比为该唯一指向标识的顺延步骤,直接设为自增字段,作为detail信息单独存放在表A中;
然后再表B(当前表)中做整合;将表A中的sort字段直接赋值给表B中的sort即可;
2,只对本表操作的话建议尝试设置自增字段,取别名,记录使用,后台直接将唯一标识txtShopCode作为判断是否重新自增条件;
个人不成熟建议,希望对你有所帮助;个人测试效果如图:
如果是orcle 可以这样玩:update table t set t.sort=rownum where t.textShpeCode='1' ,oracle和mysql应该差别不大,你可以试试这种方法,我现在的电脑没装mysql,没法测试