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

MySQLで値=1や値=2など複数の条件に一致する行を選択するクエリの書き方

MySQLでは、特定の列の値が複数の候補のいずれかに一致する行を抽出したい場面がよくあります。たとえば「UserAge = 25 または UserAge = 35」のように、同じ列に対して複数の条件を指定してレコードを取得する方法を、実際のSQL例とともに解説します。

サンプルテーブルの作成

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

mysql> create table DemoTable
(
    UserId int,
    UserName varchar(10),
    UserAge int
);
Query OK, 0 rows affected (0.73 sec)

レコードの挿入

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

mysql> insert into DemoTable values(101,'Chris',23);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(102,'Robert',33);
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable values(103,'David',25);
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values(104,'Carol',35);
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable values(105,'Bob',29);
Query OK, 1 row affected (0.17 sec)

テーブルの内容を確認する

SELECTコマンドで、テーブル内のすべてのレコードを表示してみます。

mysql> select *from DemoTable;

実行結果は以下のとおりです。

+--------+----------+---------+
| UserId | UserName | UserAge |
+--------+----------+---------+
| 101    | Chris    | 23      |
| 102    | Robert   | 33      |
| 103    | David    | 25      |
| 104    | Carol    | 35      |
| 105    | Bob      | 29      |
+--------+----------+---------+
5 rows in set (0.00 sec)

OR条件を使って複数の値に一致する行を取得する

UserAge列の値が「25」「33」「35」「29」のいずれかに一致するレコードを取得するには、WHERE句の中でOR演算子を組み合わせます。

mysql> select *from DemoTable where UserAge=25 or UserAge=35 or UserAge=33 or UserAge=29;

実行結果は以下のとおりです。条件に該当しない23歳のChris以外の、4件のレコードだけが表示されていることがわかります。

+--------+----------+---------+
| UserId | UserName | UserAge |
+--------+----------+---------+
| 102    | Robert   | 33      |
| 103    | David    | 25      |
| 104    | Carol    | 35      |
| 105    | Bob      | 29      |
+--------+----------+---------+
4 rows in set (0.00 sec)

IN演算子を使ったより簡潔な書き方

同じ列に対して複数の値を比較する場合、IN演算子を使うとクエリをより簡潔に書けます。

mysql> select *from DemoTable where UserAge in (25,29,33,35);

このクエリは、先ほどのOR条件によるクエリと完全に同じ結果を返します。条件の数が増えるほどIN演算子の方が読みやすく保守しやすくなるため、実務ではこちらの書き方が推奨されます。

  1. MySQLで列の値から末尾の2文字を削除するクエリの書き方

    MySQLではLEFT()関数を使うことで、文字列の先頭から指定した文字数だけを取り出すことができます。この関数とLENGTH()関数を組み合わせれば、テーブル内のすべての列の値から末尾の2文字を簡単に削除できます。 まずは、動作を確認するためのサンプルテーブルを作成しましょう。 mysql> create table DemoTable -> ( -> Name varchar(10) -> ); Query OK, 0 rows affected (0.71 sec) 次に、INSERT文を使ってレコードを挿入します。 mysql> i

  2. MySQLでNULLを含む列同士を連結する方法:IFNULL()を使った安全な文字列結合

    MySQLでNULL値を含む列を連結するには? MySQLで複数の列を連結する際、対象の列にNULLが含まれていると、CONCAT()関数の結果全体がNULLになってしまうという問題があります。これを回避するためには、IFNULL()関数を活用するのが効果的です。 この記事では、実際にテーブルを作成し、NULLを含むデータを連結する手順を具体的な例とともに解説します。 1. サンプルテーブルを作成する まず、学生の名前(姓・名)を格納するテーブルを作成しましょう。 mysql> create table DemoTable1793 ( StudentFirstName