2015-08-12 5 views
5

konvertieren Ich habe eine Tabelle Transaktion mit Spalten (ID, Betrag) alle positiven ganzen Zahlen und ich habe eine andere Tabelle Rückerstattung mit den gleichen Spalten, aber hier Betrag wird voraussichtlich negativ sein. Jetzt möchte ich Einfügen in Befehl verwenden, um aus der Transaktion auswählen und in die Rückerstattung einfügen. Wie kann ich die Menge beim Einfügen negativ machen? Folgendes ist die Abfrage, die ich versuche.Mysql: Wie positive Wert in negative beim Einfügen

Gibt es eine Möglichkeit refund.amount nimmt immer -ve Werte standardmäßig.

+1

Warum nicht einfach das Zeichen in der 'Select' Anweisung ändern? –

Antwort

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

da alle Daten in transaction ist positiv.

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

Verwendung von (-1 * Menge) hat den Trick für mich dank gemacht. +1 – ALH

3

Einfach mit -1 multiplizieren, machen Sie das als Teil Ihrer Insert-Anweisung.

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

Warum nicht nur - Betrag? – jarlh

+0

Mein Oracle-Hintergrund kommt durch, denke ich. – MarioAna

+0

Tut mir leid das zu hören! Auf eine ernstere Note, Ihre Lösung würde jedoch einen negativen Wert positiv, was schlechte Daten einführen könnte, was mich fragen lässt, ob ich Ihre Antwort ablehnen sollte. – kguest

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

Wenn Sie aus irgendeinem Grund, sind Sie nicht ein positiver Betrag jedes Mal, wenn eine neue Zeile einzufügen bekommen garantiert, nehmen Sie den absoluten Wert und multipliziert es mit -1

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

Andernfalls wird die ABS() Teil wird nicht benötigt

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