11

我有付款表字段

在此处输入图像描述

更新原因和金额和总计字段更改为负数

UPDATE payment 
SET reason = 'refund' 
WHERE uid =5 AND date = '2012-05-01' AND accid =2 

更新单个查询是否可能?

4

3 回答 3

19

如果我理解正确,您还希望将金额列与上述语句一起设置为正值。

你可以使用这样的东西

UPDATE payment 
SET reason = 'refund', amount = amount * -1, total = total * -1
WHERE uid =5 AND date = '2012-05-01' AND accid =2
于 2012-06-27T13:01:40.040 回答
6

ABS(amount)如果您希望始终获得正整数,请使用。

SELECT ABS(5);

将输出 5

SELECT ABS(-5);  

也会输出 5

于 2015-03-04T11:12:36.813 回答
0

当我寻找解决方案时,提供的建议破坏了我的结果:

SELECT @TotalAmount:=( SELECT FORMAT(SUM(Amount),   4)  FROM MPPayment WHERE PaymentBatchID = 6 and CompanyID=3);

正确的结果:

在此处输入图像描述

格式化后:

SELECT @TotalAmount:=( SELECT FORMAT(SUM(Amount),   4)  FROM MPPayment WHERE PaymentBatchID = 6 and CompanyID=3);
SELECT @TotalAmount * -1;

在此处输入图像描述 可能不适用于格式化。

另一种解决方案是从零中减去您的数字:

SELECT @TotalAmount:=( SELECT SUM(Amount)  FROM MPPayment WHERE PaymentBatchID = 6 and CompanyID=3);
 select FORMAT((0 - @TotalAmount), 4 ); 

为了避免上述结果的损坏,我在操作结束时进行了格式化。结果很好:

在此处输入图像描述

也适用于乘以 -1:

 SELECT @TotalAmount:=( SELECT SUM(Amount)  FROM MPPayment WHERE PaymentBatchID = 6 and CompanyID=3);
 select FORMAT(( @TotalAmount *-1), 4 );
于 2019-08-26T02:41:40.047 回答