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

ユーザー定義変数の値を加算してMySQLテーブルの行を更新する方法

MySQLでは、ユーザー定義変数(@変数名)に値を格納し、UPDATE文の中でその値を利用することで、既存の行の列値に加算する処理を簡単に行えます。ここでは、実際のサンプルコードを使いながら手順を解説します。

1. サンプルテーブルの作成

まず、テーブルを作成します。

mysql> create table DemoTable1349
    -> (
    -> ProductId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> ProductPrice int
    -> );
Query OK, 0 rows affected (0.71 sec)

このテーブルは、自動採番される「ProductId」と商品価格を表す「ProductPrice」の2つの列を持っています。

2. レコードの挿入

次に、INSERT文を使ってテーブルにレコードを挿入します。

mysql> insert into DemoTable1349(ProductPrice) values(7644);
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable1349(ProductPrice) values(90843);
Query OK, 1 row affected (0.06 sec)
mysql> insert into DemoTable1349(ProductPrice) values(9083);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1349(ProductPrice) values(10000);
Query OK, 1 row affected (0.12 sec)

3. 現在のデータを確認する

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

mysql> select * from DemoTable1349;

実行結果は以下の通りです。

+-----------+--------------+
| ProductId | ProductPrice |
+-----------+--------------+
|         1 |         7644 |
|         2 |        90843 |
|         3 |         9083 |
|         4 |        10000 |
+-----------+--------------+
4 rows in set (0.00 sec)

4. ユーザー定義変数を使って列の値を更新する

ここがポイントです。まずSET文でユーザー定義変数「@AppendValue」に加算したい値を設定します。その後、UPDATE文の中でこの変数を参照し、対象の行のProductPriceに加算します。

mysql> set @AppendValue:=500;
Query OK, 0 rows affected (0.00 sec)
mysql> update DemoTable1349 set ProductPrice=ProductPrice+@AppendValue where ProductId=4;
Query OK, 1 row affected (0.13 sec)
Rows matched: 1 Changed: 1 Warnings: 0

このクエリでは、「ProductId=4」の行のProductPriceに対して、変数@AppendValue(500)を加算しています。WHERE句で対象行を限定することで、意図した1行だけを安全に更新できる点に注目してください。

5. 更新後のデータを確認する

もう一度SELECT文でテーブルの内容を確認しましょう。

mysql> select * from DemoTable1349;

実行結果は以下の通りです。

+-----------+--------------+
| ProductId | ProductPrice |
+-----------+--------------+
|         1 |         7644 |
|         2 |        90843 |
|         3 |         9083 |
|         4 |        10500 |
+-----------+--------------+
4 rows in set (0.00 sec)

ProductId=4の行のProductPriceが「10000」から「10500」に更新されていることが確認できます。このように、ユーザー定義変数を活用すれば、加算する値を動的に変更しながら柔軟にUPDATE処理を行うことが可能です。

  1. MySQLのVARCHAR型カラムから最大値を正しく取得する方法

    VARCHAR型(文字列型)のカラムに対してそのまま MAX() 関数を使用すると、値は文字列として比較されるため、「8」「901」「10001」のような数値的な大小関係が正しく評価されません。そこで、CAST() を使って値を数値型に変換してから MAX() を適用することで、正確な最大値を取得できます。 1. サンプルテーブルを作成する まず、動作確認用のテーブルを作成しましょう。 mysql> create table DemoTable2030 -> ( -> Value varchar(20) -> ); Query OK, 0 row

  2. MySQLで値が「0」の場合に別の列から値を取得する方法

    MySQLで値が「0」の場合に別の列から値を取得する方法MySQLでは、IF()関数を使用することで、特定の列の値が「0」だった場合に、別の列の値を代わりに取得できます。条件分岐を1つのクエリ内で簡単に実現できる便利な関数です。IF()関数の基本構文select IF(yourColumnName1=0,yourColumnName2,yourColumnName1) as anyAliasName from yourTableName;この構文では、最初の列の値が「0」であれば2番目の列の値を返し、「0」以外であれば最初の列の値をそのまま返します。サンプルテーブルの作成まず、動作確認用のテー