2015-08-12 16 views
5

Mam jedną transakcję tabeli z kolumnami (id, kwota) wszystkich liczb całkowitych dodatnich i mam inny zwrot w tabeli z tych samych kolumn, ale tutaj kwota ma być ujemna. Teraz chcę użyć polecenia Wstaw do, aby wybrać transakcję i wstawić do zwrotu. Jak mogę ustawić ujemną kwotę podczas wstawiania? Poniżej znajduje się zapytanie, które próbuję.Mysql: Jak przekonwertować wartość dodatnią na ujemną podczas wstawiania

INSERT INTO refund (id,amount) 
SELECT id, amount FROM `transaction` 

Czy jest jakiś sposób, aby kwota zwrotu zawsze domyślnie wynosiła -ve.

+1

Dlaczego po prostu nie zmienić znaku w instrukcji 'select'? –

Odpowiedz

8
INSERT INTO refund (id,amount) 
SELECT id, (0 - amount) as amount FROM `transaction` 

jak wszystkich danych w transaction jest dodatni.

INSERT INTO refund (id,amount) 
SELECT id, (-1 * amount) as amount FROM `transaction` 
+0

Używanie (-1 * ilość) zrobiło dla mnie dzięki. +1 – ALH

3

Po prostu pomnóż przez -1, zrób to jako część instrukcji wstawiania.

INSERT INTO refund (id,amount) 
SELECT id, 
     amount * -1 
FROM `transaction` 
+0

Dlaczego nie tylko? – jarlh

+0

Moje tło Wyroczni, jak sądzę. – MarioAna

+0

Przykro to słyszeć! Ale mówiąc poważniej, twoje rozwiązanie zmieni wartość ujemną na pozytywną, co może wprowadzić złe dane, powodując, że zastanawiam się, czy powinienem udzielić ci odpowiedzi. – kguest

3
INSERT INTO refund (id,amount) 
SELECT id, (amount * -1) AS amount FROM `transaction` 
7

Jeśli z jakiegoś powodu nie są gwarantowane dostać kwotę dodatnią każdym włożeniu nowego wiersza, wziąć wartość bezwzględną i pomnożyć przez -1

INSERT INTO refund (id,amount) 
SELECT id, -1 * ABS(amount) FROM `transaction` 

W przeciwnym razie, ABS() część nie jest potrzebna

INSERT INTO refund (id,amount) 
SELECT id, -1 * amount FROM `transaction` 
Powiązane problemy