MySQLでブール値(BOOLEAN)を更新する方法を解説
MySQLでブール値を更新するには?
MySQLでは、SET句を使うことでブール値(BOOLEAN型)のカラムを簡単に更新できます。MySQLではBOOLEANは実質的にTINYINT(1)として扱われるため、true / false のほか、1 / 0 や否定演算子 ! を使った反転も可能です。
ここでは、サンプルテーブルを作成し、実際にブール値を更新する手順を順番に見ていきましょう。
ステップ1:テーブルを作成する
まず、isMarried というブール値カラムを持つテーブルを作成します。
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, isMarried boolean
);
Query OK, 0 rows affected (0.58 sec)
ステップ2:レコードを挿入する
INSERT コマンドを使って、いくつかのレコードを追加します。
mysql> insert into DemoTable(isMarried) values(false); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable(isMarried) values(true); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable(isMarried) values(true); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable(isMarried) values(false); Query OK, 1 row affected (0.13 sec)
ステップ3:データを確認する
SELECT 文で全レコードを表示してみましょう。
mysql> select *from DemoTable;
実行すると、次のような結果が得られます。
+----+-----------+ | Id | isMarried | +----+-----------+ | 1 | 0 | | 2 | 1 | | 3 | 1 | | 4 | 0 | +----+-----------+ 4 rows in set (0.00 sec)
このように、ブール値は 1(true)と 0(false)として保存されていることが確認できます。
ステップ4:ブール値を更新する
それでは、ブール値を更新するクエリを見ていきましょう。特定の行の値を反転させたい場合は、否定演算子 ! を使うと便利です。
mysql> update DemoTable set isMarried = !isMarried where Id=4; Query OK, 1 row affected (0.17 sec) Rows matched: 1 Changed: 1 Warnings: 0
このクエリでは、Id = 4 の行に対して isMarried の現在の値を論理的に反転(0なら1に、1なら0に)しています。
更新結果を確認する
もう一度テーブルの内容を表示してみます。
mysql> select *from DemoTable;
以下が出力結果です。Id = 4 のブール値が更新されているのがわかります。
+----+-----------+ | Id | isMarried | +----+-----------+ | 1 | 0 | | 2 | 1 | | 3 | 1 | | 4 | 1 | +----+-----------+ 4 rows in set (0.00 sec)
まとめ
上記の出力結果を見ると、Id = 4 の行の値が 0 から 1 に更新されていることが確認できます。
このように、MySQLでブール値を更新するには UPDATE ... SET を使います。直接 true / false(または 1 / 0)を指定するだけでなく、!isMarried のように否定演算子を使えば、現在の値をワンステップで反転させることもできるので、トグル(ON/OFF切り替え)処理などに非常に便利です。
-
MySQLでn番目に高い値を取得する方法をわかりやすく解説
MySQLでn番目に高い値を取得する方法MySQLでテーブル内のn番目に高い値を取得したい場合、ORDER BY句とLIMIT句を組み合わせることで簡単に実現できます。基本構文n番目に高い値を選択するための基本的な構文は以下の通りです。SELECT DISTINCT(カラム名) FROM テーブル名 ORDER BY カラム名 DESC LIMIT (n番目の値 - 1), 1;ポイントはLIMIT句の使い方です。第1引数に「(n番目 - 1)」を指定することで、降順に並べ替えた結果から指定した位置のレコードを1件だけ取得できます。また、DISTINCTを使用することで、重複する値を除外した上
-
MySQLでタイムスタンプ列に基づいてデータを選択し、真偽値を設定する方法
MySQLでタイムスタンプ列に基づいてデータを選択し、真偽値を設定する方法 MySQLではIF()関数を使うことで、タイムスタンプ列の値に基づいてデータを選択し、結果を真偽値(1または0)として取得できます。この記事では、実際のサンプルコードを交えながら手順を詳しく解説します。 まず、現在の日付を確認しておきましょう。 mysql> select curdate(); +------------+ | curdate() | +------------+ | 2019-12-10 | +------------+ 1 row in set (0.00 sec) テーブルの作成 はじめに