嗨,我是sql的新手,我仍然在学习,因此任何建议或帮助都将非常有用。我试图删除状态为“已完成”的记录,然后根据删除的行数来更新特定列的列减少数。我的桌子在下面
tblA
numberx Address Status
0001 AddA New
0002 AddA Complete
0003 AddA Not Done
0001 AddB Complete
0002 AddB Complete
0003 AddB New
0001 AddC Not done
我能够执行删除操作,但是对于更新查询,这是错误的,它会将每个numberx减少为1,并给我类似错误的输出
tblA
numberx Address Status
0 AddA New
1 AddA Not Done
0 AddB New
0 AddC Not done
如果它已经是0001并且尚未完成,我希望它像这样将通过0001邮寄
DELETE FROM tblA WHERE STATUS = 'Complete';
UPDATE tblA SET numberx = numberx - 1;
SELECT * FROM tblA
Desired Output
numberx Address Status
0001 AddA New
0002 AddA Not Done
0001 AddB New
0001 AddC Not done
答案 0 :(得分:0)
将字符串
str
返回字符串padstr
,用字符串len
左填充,长度为str
个字符。如果len
长于len
,则返回值将缩短为UPDATE tblA SET numberx = LPAD((numberx - 1), 4, 0);
个字符。
FILE
答案 1 :(得分:0)
检查您正在使用的列的数据类型,如果初始值为0,则后面的值为: 更新tblA SET numberx = numberx-1; 这意味着您还必须查看主键和身份规则。