MySQLで3番目のカラムの値に基づいて2つのカラムから1つを選択する方法
MySQLでは、IF() 関数を使うことで、あるカラム(3番目のカラム)の値を条件として、他の2つのカラムからどちらか一方を選択して表示できます。ここでは具体的な手順をサンプルコード付きで解説します。
1. サンプルテーブルの作成
まず、CREATE TABLE文でテーブルを作成します。
mysql> create table DemoTable
-> (
-> PlayerName varchar(100),
-> PlayerScore int,
-> PlayerStatus varchar(100)
-> );
Query OK, 0 rows affected (0.58 sec)
2. レコードの挿入
次に、INSERTコマンドを使ってテーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable values('John',88,'BAD');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Chris',78,'BAD');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('Robert',90,'BAD');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('David',80,'BAD');
Query OK, 1 row affected (0.23 sec)3. テーブルの内容を確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
出力結果
+------------+-------------+--------------+
| PlayerName | PlayerScore | PlayerStatus |
+------------+-------------+--------------+
| John | 88 | BAD |
| Chris | 78 | BAD |
| Robert | 90 | BAD |
| David | 80 | BAD |
+------------+-------------+--------------+
4 rows in set (0.00 sec)
4. IF()関数を使って条件に応じたカラムを選択する
3番目のカラム(PlayerStatus)ではなく、ここでは PlayerScore の値を条件として使用し、スコアが80より大きい場合は PlayerName を、そうでない場合は PlayerStatus を表示するクエリは以下のとおりです。
mysql> select PlayerScore,if(PlayerScore > 80 , PlayerName ,PlayerStatus) AS Result from DemoTable;
出力結果
+-------------+--------+
| PlayerScore | Result |
+-------------+--------+
| 88 | John |
| 78 | BAD |
| 90 | Robert |
| 80 | BAD |
+-------------+--------+
4 rows in set (0.00 sec)
IF()関数の構文について
IF() 関数は以下のような構文で記述します。
IF(条件式, 条件が真の場合に返す値, 条件が偽の場合に返す値)
上記の例では、「PlayerScore > 80」という条件式が真(TRUE)であれば PlayerName の値が、偽(FALSE)であれば PlayerStatus の値が「Result」列として返されます。そのため、スコア88のJohnと90のRobertにはプレイヤー名が表示され、スコア78のChrisと80のDavidには「BAD」が表示されているのが確認できます。
なお、より多くの分岐が必要な場合は CASE 式を使うこともできます。単純な二択の条件分岐であれば、IF() 関数が簡潔で便利です。
-
MySQLの1つのクエリで2つのSELECTステートメントを組み合わせ、特定の値を持たないレコードを抽出する方法
特定のフィールドに特定の値が存在しないレコードを取得したい場合、WHERE句とサブクエリ(副問い合わせ)を組み合わせることで実現できます。本記事では、1つのクエリ内で2つのSELECTステートメントを使用して目的のレコードを抽出する方法を、テーブル作成から実行結果まで具体例とともに解説します。 テーブルの作成 まず、サンプル用のテーブルを作成しましょう。ここでは、UserNameとUserType(ENUM型)の2つのカラムを持つテーブルを定義します。 mysql> create table DemoTable1840 ( UserName varchar(20),
-
MySQLで最も出現回数の多い値を取得する方法(ORDER BY COUNT(*)の使い方)
MySQLでカウント(出現回数)が最も多い値を取得する方法MySQLで特定のフィールドに出現回数が最も多い値を取得したい場合は、GROUP BYとORDER BY COUNT(*)を組み合わせます。この記事では、実際にテーブルを作成しながら、その手順をサンプルコード付きでわかりやすく解説します。1. サンプルテーブルの作成まず、CREATE TABLE文でテーブルを作成します。mysql> create table DemoTable1940 ( FirstName varchar(20) ); Query OK, 0 rows affected (0.00 se