MySQLで検索条件を指定する「WHERE」と「演算子」

MySQLでデータ取得する時などの検索条件を指定するWHERE句について説明します。

検索条件を指定する「WHERE」句

WHERE句は、SELECT文やDELETE文など様々なクエリで使います。SELECT文でWHERE句を使う時の基本となる書式は以下の通りです。

条件を複数指定する

検索条件を複数指定するには、「AND」または「OR」を使います。

AND:条件1と条件2のどちらにも合致

OR:条件1または条件2のどちらかに合致

条件は、ANDとORでつなげることで任意の数だけ設定できます。

より複雑な複数条件

ANDとORを使い3つ以上の条件を指定する場合は、括弧()で囲むことで条件指定します。

条件1または条件2に合致し、なおかつ条件3に合致するデータを全カラム取得する場合は以下のようなクエリになります。

条件に使う演算子

条件の指定には、「=」や「BETWEEN」などの演算子と呼ばれるものを使います。

例として、以下のようなID, Name, Class, Scoreで構成されるUserテーブルがあるとします。

Userテーブル

値との完全一致「=」「IN」「NOT IN」

指定した値との一致を条件とする場合、「=」演算子を使います。

NameがJohnのカラムを取得する

複数の指定した値との一致を条件とする場合、「IN」を使います。「カラム IN (値1, 値2, ...)」のように、カンマ区切りで値を複数指定します。

ClassがAとCのカラムを取得する

数値の比較「>」「<」「BETWEEN」

数値が指定した値より大きいか小さいかを条件とする場合は、「>」「<」演算子を使います。

Scoreが40以上のカラムを取得

Scoreが40以下のカラムを取得

「値A~値B」の間にある数値を指定するには「BETWEEN」を使います。

Scoreが40~70のカラムを取得する

また、「NOT BETWEEN」とすることで「値A~値B」に間にない数値を指定できます。

値との曖昧な一致「LIKE」

指定した値と一部だけ一致するカラムを取得するには、「LIKE」を使います。ワイルドカードとして「%」と「_」が使えます。

「%」任意の0文字以上の文字列
「_」任意の1文字

Mailの末尾がcomのカラムを取得

このほかにも、正規表現を使った演算子である 「REGEXP」や「RLIKE」などもあります。

また、サブクエリや結合を使うことでより複雑な条件を指定することができます。


Welcome to UX MILK

UX MILKはより良いサービスやプロダクトを作りたい人のためのメディアです。

このサイトについて

UX MILKのディレクター募集