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)で返してくれるため、条件分岐やデータ絞り込みの際に非常に便利な関数です。
-
MySQLでsql_modeを永続的に設定する方法を解説
MySQLのsql_modeを永続的に設定する手順MySQLでは、セッションごとにSET sql_modeを実行してSQLモードを変更できますが、サーバーを再起動すると設定は元に戻ってしまいます。そこで本記事では、設定ファイル(my.cnf / my.ini)を編集することで、sql_modeを永続的に設定する方法を解説します。ステップ1:データディレクトリの場所を確認するまず、MySQLのデータディレクトリの場所を確認しましょう。以下のコマンドを実行します。mysql> select @@datadir;実行結果は次のようになります。+-------------------------
-
MySQLで警告メッセージを抑制する方法|sql_notes変数の使い方を解説
MySQLでは、存在しないテーブルへの操作など、実行結果に問題がなくても「警告(Warning)」が表示されることがあります。ログを整形したい、不要なメッセージを出力させたくないといった場合は、システム変数 sql_notes をオフにすることで、これらの警告を抑制できます。この記事では、実際のコマンド例とともに、警告の表示・非表示を切り替える手順をわかりやすく解説します。1. sql_notes を有効にした状態(デフォルト)まず、sql_notes を 1(有効) に設定します。MySQLのデフォルト設定でもあるため、通常は明示的に実行する必要はありません。mysql> SET sq