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

MySQLで特定のDATE値に基づいてUPDATEを実行する方法

MySQLでは、日付(DATE)型の列の値を条件として、UPDATE文を使ってテーブルのデータを更新できます。この記事では、実際にサンプルテーブルを作成し、特定の日付を条件にレコードを更新する手順をわかりやすく解説します。

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

まず、以下のようにCREATE TABLE文を実行してテーブルを作成します。

mysql> create table DemoTable(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name varchar(100),
    AdmissionDate date
);
Query OK, 0 rows affected (0.42 sec)

ここでは、「Id」「Name」「AdmissionDate(入学日)」の3つの列を持つ「DemoTable」を作成しました。

2. レコードの挿入

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

mysql> insert into DemoTable(Name,AdmissionDate) values('Chris','2019-11-21');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable(Name,AdmissionDate) values('Mike','2019-03-11');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(Name,AdmissionDate) values('Sam','2018-04-01');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(Name,AdmissionDate) values('Carol','2019-05-01');
Query OK, 1 row affected (0.40 sec)

3. 挿入したレコードの確認

SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

上記のコマンドを実行すると、次のような結果が出力されます。

+----+-------+---------------+
| Id | Name  | AdmissionDate |
+----+-------+---------------+
|  1 | Chris | 2019-11-21    |
|  2 | Mike  | 2019-03-11    |
|  3 | Sam   | 2018-04-01    |
|  4 | Carol | 2019-05-01    |
+----+-------+---------------+
4 rows in set (0.00 sec)

4. UPDATE文でレコードを更新する

それでは、UPDATE文を使ってレコードを更新します。今回は、Idが3のレコードに対して、NameとAdmissionDateの値を新しい値に変更します。

mysql> update DemoTable set Name='Robert',AdmissionDate='2019-04-01' where Id=3;
Query OK, 1 row affected (0.14 sec)
Rows matched: 1 Changed: 1 Warnings: 0

WHERE句で条件を指定することで、該当するレコードだけを更新できます。「Rows matched: 1 Changed: 1」と表示されていることから、1件のレコードが正常に更新されたことがわかります。

ポイント: WHERE句を指定せずにUPDATE文を実行すると、テーブル内のすべてのレコードが更新されてしまうため注意が必要です。必ず更新対象を絞り込む条件を設定しましょう。

5. 更新後のレコードを確認

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

mysql> select *from DemoTable;

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

+----+--------+---------------+
| Id | Name   | AdmissionDate |
+----+--------+---------------+
|  1 | Chris  | 2019-11-21    |
|  2 | Mike   | 2019-03-11    |
|  3 | Robert | 2019-04-01    |
|  4 | Carol  | 2019-05-01    |
+----+--------+---------------+
4 rows in set (0.00 sec)

Idが3のレコードが「Sam / 2018-04-01」から「Robert / 2019-04-01」に更新されていることが確認できます。このように、UPDATE文とWHERE句を組み合わせることで、特定の条件に合致するレコードだけを柔軟に更新することが可能です。

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

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

  2. MySQLで列の最大値を取得する方法をわかりやすく解説

    MySQLで特定の列の最大値を取得するには、MAX(columnName)関数を使用します。本記事では、その基本的な使い方に加えて、データベースやテーブルの設計に関する前提知識もあわせて解説します。MySQLのデータベースとテーブルの基礎MySQLをインストールする前に、まず使用するバージョンと配布形式(バイナリファイルか、ソースファイルからビルドするか)を決定することが重要です。新しく作成したばかりのデータベースには、当然ながらテーブルはまだ存在しません。データベース設計において最も重要なのは、以下の要素を決めることです。データベース全体の構造必要となるテーブルの一覧各テーブルに含まれる列(