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

MySQLで特定のフィールド・行を除外して他のレコードを表示する方法

はじめに

MySQLでは、CASE WHENステートメントを活用することで、特定の条件に一致するフィールドや行を結果から除外し、目的のレコードだけを表示できます。本記事では、実際のテーブル作成からクエリ実行まで、具体的な手順を解説します。

サンプルテーブルの作成

まず、デモ用のテーブルを作成しましょう。

mysql> create table demo47
-> (
-> first_name varchar(20),
-> last_name varchar(20)
-> );
Query OK, 0 rows affected (1.57 sec)

レコードの挿入

次に、INSERTコマンドを使ってテーブルにデータを追加します。

mysql> insert into demo47 values('John','Smith');
Query OK, 1 row affected (0.18 sec)

mysql> insert into demo47 values('David','Miller');
Query OK, 1 row affected (0.11 sec)

mysql> insert into demo47 values('John','Doe');
Query OK, 1 row affected (0.12 sec)

mysql> insert into demo47 values('Chris','Brown');
Query OK, 1 row affected (0.12 sec)

テーブルの内容を確認

SELECT文で登録済みのレコードを表示してみましょう。

mysql> select *from demo47;

実行すると、以下のような結果が得られます。

+------------+-----------+
| first_name | last_name |
+------------+-----------+
| John | Smith |
| David | Miller |
| John | Doe |
| Chris | Brown |
+------------+-----------+
4 rows in set (0.00 sec)

特定の行を除外して表示するクエリ

それでは、特定のフィールドや行を除外し、残りのレコードを表示するクエリを見ていきましょう。ここでは「John」という名前に一致する行を対象に処理を行います。

mysql> select case when first_name= 'John' then last_name else first_name end Result
-> from demo47
-> where 'John' in (first_name,last_name);

クエリのポイント

このクエリの仕組みは以下のとおりです。

WHERE句: 「'John' in (first_name, last_name)」により、first_nameまたはlast_nameのどちらかに「John」が含まれる行のみを抽出します。

CASE WHEN句: first_nameが「John」の場合はlast_nameの値を返し、それ以外の場合はfirst_nameの値を返します。これにより、除外したい値(John)が出力に現れなくなります。

実行結果

上記のクエリを実行すると、次の出力が得られます。

+--------+
| Result |
+--------+
| Smith |
| Doe |
+--------+
2 rows in set (0.00 sec)

まとめ

CASE WHENステートメントとWHERE句を組み合わせることで、MySQLで特定の値を持つフィールドや行を効果的に除外し、必要なレコードのみを柔軟に表示することが可能です。条件分岐を活用したこの手法は、データの整形やフィルタリングに非常に便利なので、ぜひ活用してみてください。

  1. MySQLのMATCH...AGAINSTを使って特定のカラムに文字列を含む行を選択する方法

    MySQLで特定のカラムに文字列を含む行を検索したい場合、FULLTEXTインデックスと MATCH() ... AGAINST() 構文を組み合わせることで、高速な全文検索が可能になります。ここでは、実際にテーブルを作成し、データを挿入して、MATCH...AGAINSTによる検索を行う手順を解説します。1. テーブルの作成まず、検索対象となるテーブルを作成します。mysql> create table DemoTable1833 ( Name varchar(20) ); Query OK, 0 rows affected (0.00 sec)2. FU

  2. MySQLで特定の月と年に基づいてレコードを取得する方法

    MySQLで特定の月と年に基づいてレコードを取得する方法日付データから特定の月と年に該当するレコードだけを抽出したい場合、MySQLの MONTH() 関数と YEAR() 関数を組み合わせて使用します。ここでは、実際にテーブルを作成し、データを挿入して、条件に合うレコードを取得するまでの手順を具体的に解説します。1. サンプルテーブルの作成まず、日付型(DATE)のカラムを持つテーブルを作成します。mysql> create table DemoTable1846     (     PurchaseDat