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

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() 関数が簡潔で便利です。

  1. MySQLの1つのクエリで2つのSELECTステートメントを組み合わせ、特定の値を持たないレコードを抽出する方法

    特定のフィールドに特定の値が存在しないレコードを取得したい場合、WHERE句とサブクエリ(副問い合わせ)を組み合わせることで実現できます。本記事では、1つのクエリ内で2つのSELECTステートメントを使用して目的のレコードを抽出する方法を、テーブル作成から実行結果まで具体例とともに解説します。 テーブルの作成 まず、サンプル用のテーブルを作成しましょう。ここでは、UserNameとUserType(ENUM型)の2つのカラムを持つテーブルを定義します。 mysql> create table DemoTable1840 ( UserName varchar(20),

  2. 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