MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでINSERT時に正の値を負の値へ変換する方法をわかりやすく解説

MySQLで挿入時に正の値を負の値に変換するには?

MySQLでは、データを挿入する際に-1を掛け算することで、正の値を簡単に負の値へ変換できます。本記事では、実際のテーブル作成からデータ挿入、変換処理までの手順をサンプルコード付きで解説します。

ステップ1:元となるテーブルを作成する

まず、変換元のデータを格納するテーブルを作成しましょう。

mysql> create table recordsDemo
    -> (
    -> UserId int,
    -> Value int
    -> );
Query OK, 0 rows affected (0.52 sec)

ステップ2:テーブルにレコードを挿入する

次に、INSERTコマンドを使っていくつかのレコードを追加します。

mysql> insert into recordsDemo values(1,10);
Query OK, 1 row affected (0.17 sec)
mysql> insert into recordsDemo values(3,598);
Query OK, 1 row affected (0.18 sec)
mysql> insert into recordsDemo values(5,786);
Query OK, 1 row affected (0.25 sec)
mysql> insert into recordsDemo values(7,189);
Query OK, 1 row affected (0.16 sec)
mysql> insert into recordsDemo values(9,345);
Query OK, 1 row affected (0.14 sec)

ステップ3:登録したレコードを確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from recordsDemo;

実行結果は以下のとおりです。すべて正の値が登録されていることがわかります。

+--------+-------+
| UserId | Value |
+--------+-------+
| 1      | 10    |
| 3      | 598   |
| 5      | 786   |
| 7      | 189   |
| 9      | 345   |
+--------+-------+
5 rows in set (0.00 sec)

ステップ4:変換先のテーブルを作成する

続いて、負の値を格納する2つ目のテーブルを作成します。AUTO_INCREMENTとPRIMARY KEYを設定したテーブル構造は以下のとおりです。

mysql> create table PositiveToNegativeValueDemo
   -> (
   -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> Money int
   -> );
Query OK, 0 rows affected (0.83 sec)

ステップ5:挿入時に正の値を負の値へ変換する

ここがポイントです。INSERT ... SELECT文の中で「-1 * 値」を指定することで、SELECTで取得した正の値をそのまま負の値に変換しながら挿入できます。

mysql> insert into PositiveToNegativeValueDemo(Id,Money)
   -> select UserId,(-1*Value) from recordsDemo;
Query OK, 5 rows affected (0.15 sec)
Records: 5 Duplicates: 0 Warnings: 0

ステップ6:変換結果を確認する

SELECT文でテーブルの中身を確認しましょう。

mysql> select *from PositiveToNegativeValueDemo;

実行結果を見ると、すべての値が負の値として登録されていることが確認できます。

+------+-------+
| Id   | Money |
+------+-------+
| 1    | -10   |
| 3    | -598  |
| 5    | -786  |
| 7    | -189  |
| 9    | -345  |
+------+-------+
5 rows in set (0.00 sec)

まとめ

MySQLでINSERT時に正の値を負の値へ変換したい場合は、INSERT ... SELECT文で「-1 * カラム名」を指定するのが最もシンプルな方法です。この手法は、入出金履歴のように支出をマイナス表記にしたい場合など、実務でもよく活用されます。なお、既存テーブルの値を一括で反転させたい場合は「UPDATE テーブル名 SET 列名 = 列名 * -1;」というUPDATE文も利用できますので、用途に合わせて使い分けるとよいでしょう。

  1. MySQLでNULL値を0に置き換える方法:IFNULL関数の使い方を解説

    MySQLでクエリを実行した際にNULL値が返ってくる場合、IFNULL()関数を使うことで、NULLを別の値(ここでは0)に置き換えることができます。この記事では、実際にテーブルを作成し、NULL値を含むデータに対してIFNULL()を適用する手順を順番に解説します。サンプルテーブルの作成まず、テスト用のテーブルを作成します。Idカラムは自動採番の主キーとし、ValueカラムにはNULLを許容するように定義します。mysql> create table DemoTable -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMAR

  2. 負の値を降順に、正の値を昇順に並べて表示するMySQLクエリ

    このような並び順を実現するには、UNIONを使用します。まずはサンプルテーブルを作成しましょう。mysql> create table DemoTable -> ( -> Number int -> ); Query OK, 0 rows affected (1.17 sec)テストデータの挿入INSERTコマンドを使って、いくつかのレコードをテーブルに登録します。mysql> insert into DemoTable values(10); Query OK, 1 row affected (0.23 sec) mysql> insert into D