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文も利用できますので、用途に合わせて使い分けるとよいでしょう。
-
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
-
負の値を降順に、正の値を昇順に並べて表示する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