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

MySQLのIN()比較関数とは?仕組みと使い方を実例付きで解説

MySQLのIN()比較関数は、ある値が指定した値の集合(リスト)の中に含まれているかどうかを判定するための関数です。判定の結果、値がリスト内に存在すれば 1 を返し、存在しなければ 0 を返します。

IN()関数の基本構文

Expression IN (val1, val2,…,valN)

各要素の意味は以下の通りです。

  • Expression:INリスト内のN個の値の中から検索される対象となる値です。
  • val1, val2,…, valN:検索対象となるN個の値の集合で、これらがINリストを構成します。

実行例

まずは数値を使った基本的な例を見てみましょう。100がリストに含まれているため、結果は1になります。

mysql> Select 100 IN (50,100,200,400,2000);
+------------------------------+
| 100 IN (50,100,200,400,2000) |
+------------------------------+
|                         1 |
+------------------------------+
1 row in set (0.00 sec)

次に、リストに存在しない値1000を指定した場合です。この場合は0が返されます。

mysql> Select 1000 IN (50,100,200,400,2000);
+-------------------------------+
| 1000 IN (50,100,200,400,2000) |
+-------------------------------+
|                          0 |
+-------------------------------+
1 row in set (0.00 sec)

IN()関数は数値だけでなく、文字列に対しても同じように動作します。完全一致する文字列がリスト内にあれば1を返します。

mysql> Select 'ABC' IN ('ABCD','ABCDE','ABC');
+---------------------------------+
| 'ABC' IN ('ABCD','ABCDE','ABC') |
+---------------------------------+
|                           1 |
+---------------------------------+
1 row in set (0.01 sec)

一方、一致する文字列が存在しない場合は、次のように0が返されます。

mysql> Select 'ABC' IN ('ABCD','ABCDE','ABCDEF');
+------------------------------------+
| 'ABC' IN ('ABCD','ABCDE','ABCDEF') |
+------------------------------------+
|                             0 |
+------------------------------------+
1 row in set (0.00 sec)

まとめ

IN()比較関数は、WHERE句などと組み合わせて特定の複数の値に一致するレコードを抽出する際にも広く使われます。「値がリストに含まれるかどうか」をシンプルに真偽(1または0)で返してくれるため、条件分岐やデータ絞り込みの際に非常に便利な関数です。

  1. MySQLでsql_modeを永続的に設定する方法を解説

    MySQLのsql_modeを永続的に設定する手順MySQLでは、セッションごとにSET sql_modeを実行してSQLモードを変更できますが、サーバーを再起動すると設定は元に戻ってしまいます。そこで本記事では、設定ファイル(my.cnf / my.ini)を編集することで、sql_modeを永続的に設定する方法を解説します。ステップ1:データディレクトリの場所を確認するまず、MySQLのデータディレクトリの場所を確認しましょう。以下のコマンドを実行します。mysql> select @@datadir;実行結果は次のようになります。+-------------------------

  2. MySQLで警告メッセージを抑制する方法|sql_notes変数の使い方を解説

    MySQLでは、存在しないテーブルへの操作など、実行結果に問題がなくても「警告(Warning)」が表示されることがあります。ログを整形したい、不要なメッセージを出力させたくないといった場合は、システム変数 sql_notes をオフにすることで、これらの警告を抑制できます。この記事では、実際のコマンド例とともに、警告の表示・非表示を切り替える手順をわかりやすく解説します。1. sql_notes を有効にした状態(デフォルト)まず、sql_notes を 1(有効) に設定します。MySQLのデフォルト設定でもあるため、通常は明示的に実行する必要はありません。mysql> SET sq