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

MySQLのENUMフィールドを使って行を選択する方法

MySQLでは、ENUM型のカラムを条件に指定して行を抽出することができます。ここでは、ENUMフィールドを使用して特定の行を選択する手順を、実際のSQL文と実行結果とともに解説します。

サンプルテーブルの作成

まず、ENUM型のカラムを持つテーブルを作成します。以下の例では、従業員の雇用形態を格納する「EmployeeStatus」カラムに、「FULLTIME」と「Intern」という2つの値を許容するENUM型を定義し、デフォルト値をNULLに設定しています。

mysql> create table DemoTable
    -> (
    -> EmployeeStatus ENUM('FULLTIME','Intern') default NULL
    -> );
Query OK, 0 rows affected (0.66 sec)

テストデータの挿入

次に、INSERTコマンドを使っていくつかのレコードを挿入します。最後のレコードは値を指定していないため、NULLが登録されます。

mysql> insert into DemoTable values('FULLTIME');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('Intern');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('Intern');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.12 sec)

全レコードの確認

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

mysql> select * from DemoTable;

実行すると、以下のような結果が出力されます。

+----------------+
| EmployeeStatus |
+----------------+
| FULLTIME      |
| Intern        |
| Intern        |
| NULL          |
+----------------+
4 rows in set (0.00 sec)

ENUMフィールドで行を選択するクエリ

それでは本題です。「EmployeeStatus」がNULLである行、または「Intern」以外の行を抽出したい場合は、以下のようにWHERE句で条件を組み合わせます。

mysql> select * from DemoTable
    -> where EmployeeStatus is null or EmployeeStatus <> 'Intern';

このクエリを実行すると、次のような結果が得られます。

+----------------+
| EmployeeStatus |
+----------------+
| FULLTIME      |
| NULL          |
+----------------+
2 rows in set (0.00 sec)

ポイントの解説

このクエリの重要なポイントは、「EmployeeStatus is null or EmployeeStatus <> 'Intern'」という条件式です。

SQLでは、NULLは比較演算子(= や <>)での評価が常にUNKNOWNになるという特殊な性質を持っています。そのため、「EmployeeStatus <> 'Intern'」だけの条件ではNULLの行は一致しないと判定され、抽出されません。そこで、「is null」による条件をORで明示的に追加することで、NULLの行も含めて正しく取得できるのです。

ENUM型のカラムを扱う際は、デフォルト値としてNULLを許可しているケースが多いため、このようにNULL判定を組み合わせたクエリの書き方を覚えておくと便利です。

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

  2. MySQL SLESリポジトリを使ったMySQLのアップグレード手順

    MySQLは、MySQL SLESリポジトリを利用することで簡単にアップグレードできます。ここでは、そのアップグレードに必要な手順を詳しく解説します。デフォルトでは、MySQL SLESリポジトリは、インストール時にユーザーが選択したリリースシリーズ内で最新バージョンへとMySQLを更新します。別のリリースシリーズへ更新したい場合は、現在選択されているシリーズのサブリポジトリを無効化する必要があります。また、複数のシリーズをまたいだ一括アップグレードは避け、必ず一つ隣のシリーズへ段階的にアップグレードすることが推奨されています。なお、MySQL SLESリポジトリを使用している場合、インプレー