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

MySQLのUPDATE文でAND演算子を使用する方法

MySQLでは、UPDATE文のSET句の中でAND演算子を直接使用できます。比較式は真の場合に「1」、偽の場合に「0」と評価されるため、複数の条件を組み合わせた結果をそのままカラム値として設定することが可能です。ここでは、実際の例を通じてその使い方を解説します。

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

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

mysql> create table DemoTable613 (Id int,Age int,isMarried tinyint(1));
Query OK, 0 rows affected (0.54 sec)

2. レコードの挿入

INSERTコマンドを使って、テーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable613 values(100,29,0);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable613 values(200,22,0);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable613 values(300,30,1);
Query OK, 1 row affected (0.19 sec)

3. レコードの確認

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

mysql> select *from DemoTable613;

実行すると、次のような出力が得られます。

+------+------+-----------+
| Id | Age | isMarried |
+------+------+-----------+
| 100 | 29 | 0 |
| 200 | 22 | 0 |
| 300 | 30 | 1 |
+------+------+-----------+
3 rows in set (0.00 sec)

4. AND演算子を使ったUPDATE文の実行

以下が、AND演算子を使用してMySQLの更新を実行するクエリです。

mysql> update DemoTable613 set isMarried=(Age=29 AND (Id=100));
Query OK, 2 rows affected (0.24 sec)
Rows matched: 3 Changed: 2 Warnings: 0

このクエリでは、「Age=29」かつ「Id=100」という両方の条件が成り立つ行に対しては式が「1」(真)と評価され、isMarriedに1が設定されます。それ以外の行では「0」(偽)と評価されるため、isMarriedは0に更新されます。

5. 更新結果の確認

もう一度テーブルのレコードを確認してみましょう。

mysql> select *from DemoTable613;

実行すると、次のような出力が得られます。

+------+------+-----------+
| Id | Age | isMarried |
+------+------+-----------+
| 100 | 29 | 1 |
| 200 | 22 | 0 |
| 300 | 30 | 0 |
+------+------+-----------+
3 rows in set (0.00 sec)

まとめ

このように、MySQLではUPDATE文のSET句にAND演算子を含む条件式を記述することで、条件の評価結果(1または0)をそのままカラムに反映できます。実行後は、Id=100かつAge=29の行だけisMarriedが1になり、それ以外の行はすべて0に更新されていることが確認できます。フラグ管理などで条件に応じた真偽値を一括更新したい場合に便利なテクニックです。

  1. JavaのPreparedStatementを使ってMySQLテーブルを更新する方法

    JavaからMySQLのテーブルを更新するには、PreparedStatementを使用するのが一般的で安全な方法です。PreparedStatementを使うことで、SQLインジェクションを防ぎつつ、パラメータを動的に設定できます。この記事では、実際にテーブルを作成し、Javaプログラムからレコードを更新するまでの一連の手順を解説します。1. テーブルの作成まず、MySQLで更新用のテーブルを作成しましょう。mysql> create table DemoTable( Id int, FirstName varchar(40) ); Query OK, 0 rows a

  2. MySQLでGROUP BYのように特定の1行だけ更新する方法|ORDER BYとLIMITを活用したUPDATE文の書き方

    MySQLでは、UPDATE文の中でGROUP BYを直接使用することができません。しかし、「同じ値を持つ複数のレコードの中から、最初の1行だけを更新したい」というケースは実際の開発でよく発生します。 そんなときに役立つのが、ORDER BYとLIMITを組み合わせたUPDATE文です。この記事では、サンプルテーブルを使いながら、その具体的な手順をわかりやすく解説します。 1. サンプルテーブルを作成する まず、従業員情報を格納するテーブル「DemoTable2018」を作成します。テーブルには、自動採番される主キー「EmployeeId」、従業員名「EmployeeName」、給与「Emp