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

MySQLで単一クエリを使い、別の列の値をカスタム順序で選択する方法

はじめに

MySQLでは、IN()句を使用することで、単一のクエリだけで特定の列の値を任意の順序(カスタムオーダー)で抽出できます。本記事では、実際にサンプルテーブルを作成し、具体的な手順を解説します。

サンプルテーブルの作成

まず、以下のコマンドでテーブルを作成します。

mysql> create table DemoTable727 (
    Name varchar(100),
    Score int
);
Query OK, 0 rows affected (0.88 sec)

レコードの挿入

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

mysql> insert into DemoTable727 values('Chris',45);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable727 values('Robert',89);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable727 values('Carol',94);
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable727 values('David',93);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable727 values('Mike',78);
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable727 values('Sam',67);
Query OK, 1 row affected (0.22 sec)

登録データの確認

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

mysql> select *from DemoTable727;

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

+--------+-------+
| Name   | Score |
+--------+-------+
| Chris  | 45    |
| Robert | 89    |
| Carol  | 94    |
| David  | 93    |
| Mike   | 78    |
| Sam    | 67    |
+--------+-------+
6 rows in set (0.00 sec)

IN()を使ったカスタム順序での値の取得

ここからが本題です。Name列の値を指定して、対応するScore列の値を単一クエリで取得するには、WHERE句とIN()を組み合わせます。

mysql> select Score from DemoTable727 where Name IN('Robert','David','Sam');

このクエリを実行すると、以下の出力が得られます。

+-------+
| Score |
+-------+
| 89    |
| 93    |
| 67    |
+-------+
3 rows in set (0.00 sec)

まとめ

IN()句を使えば、複数の条件に一致する行を1つのクエリで効率的に絞り込めます。上記の例では、「Robert」「David」「Sam」に該当するScore(89、93、67)だけを抽出できました。なお、結果をさらに厳密に指定した順序で並べ替えたい場合は、ORDER BY FIELD(Name,'Robert','David','Sam')を組み合わせると便利です。状況に応じて活用してください。

  1. MySQLのDELETE文とIN句を組み合わせて1つのクエリで複数レコードを削除する方法

    MySQLでは、IN()句を活用することで、複数の条件値に一致するレコードを1つのDELETEクエリでまとめて削除できます。個別に削除クエリを実行する必要がなく、効率的なデータ操作が可能になります。ここでは、サンプルテーブルを作成し、実際にIN()句を使ったレコード削除の手順を解説します。1. サンプルテーブルの作成まず、テーブルを作成しましょう。mysql> create table DemoTable1922 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(20)

  2. MySQLで値が「0」の場合に別の列から値を取得する方法

    MySQLで値が「0」の場合に別の列から値を取得する方法MySQLでは、IF()関数を使用することで、特定の列の値が「0」だった場合に、別の列の値を代わりに取得できます。条件分岐を1つのクエリ内で簡単に実現できる便利な関数です。IF()関数の基本構文select IF(yourColumnName1=0,yourColumnName2,yourColumnName1) as anyAliasName from yourTableName;この構文では、最初の列の値が「0」であれば2番目の列の値を返し、「0」以外であれば最初の列の値をそのまま返します。サンプルテーブルの作成まず、動作確認用のテー