指定した値のリストと比較

広告

WHERE句で条件を指定する場合に、カラムの値が値のリストの中に一致するものがあるかどうか調べるのに便利なのがIN演算子です。書式は次の通りです。

WHERE col_name IN (value, ...)
WHERE col_name NOT IN (value, ...)

カラムの値が括弧内に列挙したいずれかの値に等しいい場合に1(=TRUE)を返します。それ以外は0を返します。(「比較演算子」も参照して下さい)。NOT INの場合は、INの結果を反転した結果(1なら0、0なら1)となります。

※ カラムの値がNULLの場合はNULLを返します。またリストの中にNULLが含まれている場合でカラムの値と一致しなかった場合もNULLを返します。

例えば次のように記述します。

SELECT * FROM personal WHERE pref IN('Tokyo', 'Chiba', 'Kanagawa');

上記では「pref」カラムの値が'Tokyo', 'Chiba', 'Kanagawa'のいずれかに一致するデータを取得します。

サンプル

実際に試してみます。まず次のようなテーブルを作成します。

mysql> create table personal(name varchar(20), pref varchar(20));

p6-1

テーブルには次のようなデータを追加してあります。

p6-2

では「pref」カラムの値が'東京都', '千葉県', '神奈川県'に一致するデータを取得します。

mysql> select * from personal where pref in('東京都', '千葉県', '神奈川県');

p6-3

反対に「pref」カラムの値が'東京都', '千葉県', '神奈川県'ではないデータを取得します。

mysql> select * from personal 
    -> where pref not in('東京都', '千葉県', '神奈川県');

p6-4

( Written by Tatsuo Ikura )