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 に答える