Mysql:如何在插入时将正值转换为负值

Sun*_*nny 8 mysql sql

我有一个表事务,列(id,金额)所有正整数,我有另一个表退款相同的列,但这里的金额预计为负数.现在我想使用Insert into命令从事务中选择并插入退款.如何在插入时使金额为负数.以下是我正在尝试的查询.

INSERT INTO refund (id,amount) 
SELECT id, amount FROM `transaction`
Run Code Online (Sandbox Code Playgroud)

有没有什么方法退款.默认情况下,总是需要-ve值.

Pra*_*een 11

INSERT INTO refund (id,amount) 
SELECT id, (0 - amount) as amount FROM `transaction`
Run Code Online (Sandbox Code Playgroud)

因为所有数据transaction都是正数.

INSERT INTO refund (id,amount) 
SELECT id, (-1 * amount) as amount FROM `transaction`
Run Code Online (Sandbox Code Playgroud)


小智 8

如果您出于某种原因无法保证每次插入新行时都获得正数,请取绝对值并乘以-1

INSERT INTO refund (id,amount) 
SELECT id, -1 * ABS(amount) FROM `transaction`
Run Code Online (Sandbox Code Playgroud)

否则,ABS()不需要该部件

INSERT INTO refund (id,amount) 
SELECT id, -1 * amount FROM `transaction`
Run Code Online (Sandbox Code Playgroud)