HOWTO · MySQL

MySQL で WHERE を使用して複数の値を選択する

この記事では、SQL クエリでの WHERE 句の使用について説明します。 さらに、WHERE 句を使用して複数の値を選択するさまざまな方法についても説明します。

このページの内容

この記事では、MySQL クエリを使用して、特定の基準を満たす特定のテーブルまたはリレーションからデータを取得する方法について説明します。 このために、WHERE 句が SQL クエリで使用されます。

SQL クエリの WHERE

WHERE 句は、単一のテーブルからデータを取得するか、複数のテーブルを結合するための基準を指定します。 指定された条件が満たされた場合、クエリはテーブルから対応する値を返します。

WHERE 句を使用してレコードを制限し、必要なものだけを取得できます。

WHERE 句は、SELECT ステートメントだけでなく、UPDATEDELETE などのステートメントでも使用されます。

WHERE 句の構文

SQL では、WHERE 句に次の構文を使用して、特定の条件に基づいてレコードをフィルター処理します。

SELECT column1, column2, ...
FROM table_name
WHERE [condition];

条件は、異なる関係 (<><=>===!=) または論理 (ANDOR) を使用して作成できます。 NOT) 演算子。

組織の従業員のデータを保存する Employees テーブルがあるとします。 テーブル データは次のとおりです。

従業員テーブル

上の表は、Employees テーブルの 6 人の従業員のデータを示しています。 年齢が 40 歳以上の従業員を選択する必要があると仮定すると、次のクエリを使用します。

SELECT * from Employees
WHERE Emp_Age > 40

出力:

40歳以上の従業員

WHERE 句で関係演算子を使用していることに注意してください。 同様に、WHERE 句で論理演算子と関係演算子を使用できます。

MySQL で WHERE 句を使用して複数の条件に基づいてレコードを選択する

複数の条件に基づいてテーブルからレコードをフィルタリングすることもできます。 このために、条件に基づいて ANDOR などの論理演算子を使用できます。

たとえば、40 歳未満で給与が $3000 を超える従業員の名前と給与を取得する必要があります。 この条件のクエリは次のようになります。

SELECT Emp_Name, Emp_Salary FROM `Employees`
WHERE Emp_Age < 40 AND Emp_Salary > 3000

このクエリの結果は次のようになります。

40歳未満で給与3000円以上の従業員

結果から、クエリで指定された両方の条件を満たす従業員のみが選択されていることがわかります。 条件のいずれかを満たす必要がある場合は、次のように、AND 演算子の代わりに OR 演算子を使用できます。

SELECT Emp_Name, Emp_Salary FROM `Employees`
WHERE Emp_Age < 40 OR Emp_Salary > 3000

結果セットは次のようになります。

40歳未満または給与3000以上の従業員

結果には、前の結果よりも多くの行が含まれていることがわかります。 これは、すべての従業員の年齢が 40 歳未満であるか、給与が $3000 を超えているためです。

IN 演算子を使用しても同じ結果が得られます。 IN 演算子は OR 演算子と同じように機能しますが、クエリの構造がより優れています。

SELECT Emp_ID,Emp_Name, Emp_Age FROM `Employees`
WHERE Emp_Name IN ("John","David")

結果セットは次のようになります。

IN 演算子を使用して複数の値を選択する - 出力

SQL クエリでは、テーブルから複数の値を選択する方法が複数あります。 ニーズと必要なデータ出力に基づいて、それらのいずれかを選択できます。