根据列值在一个查询中更新和删除

时间:2018-08-21 05:43:15

标签: mysql sql

嗨,我是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

2 个答案:

答案 0 :(得分:0)

使用LPAD(str, len, padstr)功能。

  

将字符串str返回字符串padstr,用字符串len左填充,长度为str个字符。如果len长于len,则返回值将缩短为UPDATE tblA SET numberx = LPAD((numberx - 1), 4, 0); 个字符。


FILE

答案 1 :(得分:0)

检查您正在使用的列的数据类型,如果初始值为0,则后面的值为: 更新tblA SET numberx = numberx-1; 这意味着您还必须查看主键和身份规则。