MySQL WHERE 句: AND、OR、IN、NOT IN クエリの例

WHERE句とは何ですか MySQL?

WHERE句 in MySQL 指定された SQL ステートメントによって影響を受けるデータまたは行の正確な条件を指定するために使用されるキーワードです。WHERE 句は、INSERT、UPDATE、SELECT、DELETE などの SQL ステートメントで使用して、レコードをフィルター処理し、データに対してさまざまな操作を実行できます。

データをクエリする方法を検討しました。 データベース 前のチュートリアルで SELECT ステートメントを使用します。 SELECT ステートメントは、クエリされたデータベース テーブルからすべての結果を返しました。

ただし、クエリの結果を指定された条件に制限したい場合があります。 SQL の WHERE 句は、このような状況で便利です。

の WHERE 句 MySQL
の WHERE 句 MySQL

WHERE 句の構文

WHERE 句を使用する場合の基本構文 MySQL SELECT WHERE文は以下の通りです。

SELECT * FROM tableName WHERE condition;

こちら

  • 「SELECT * FROM テーブル名」 標準です SELECTステートメント
  • "どこ" は選択クエリの結果セットを制限するキーワードであり、 "状態" 結果に適用されるフィルターです。 フィルターには、範囲、単一の値、またはサブクエリを指定できます。

では、次のことを見てみましょう 実例.

会員番号 1 を指定して、メンバー テーブルからメンバーの個人情報を取得したい場合、次のスクリプトを使用してこれを実現します。

SELECT * FROM `members` WHERE `membership_number` = 1;

上記のスクリプトを実行すると、 MySQL 作業台 「myflixdb」では次の結果が生成されます。

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm

– と組み合わせた WHERE 句 そして ロジカル Operaタ

の WHERE 条件 MySQL AND 論理演算子と一緒に使用すると、指定されたすべてのフィルター条件が満たされた場合にのみ実行されます。

ここで実際の例を見てみましょう。2 年に公開されたカテゴリ 2008 のすべての映画のリストを取得したいとします。これを実現するには、以下に示すスクリプトを使用します。
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
上記のスクリプトを実行すると、 MySQL 「myflixdb」に対するワークベンチでは、次の結果が生成されます。
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

– と組み合わせた WHERE 句 OR ロジカル Operaタ

WHERE 句を OR 演算子と一緒に使用すると、指定されたフィルター条件のいずれかまたはすべてが満たされた場合にのみ実行されます。
次のスクリプトは、カテゴリ1またはカテゴリ2のすべての映画を取得します。
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
上記のスクリプトを実行すると、 MySQL 「myflixdb」に対するワークベンチでは、次の結果が生成されます。
movie_id title director year_released category_id
1 Pirates of the Caribean 4 Rob Marshall 2011 1
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

– と組み合わせた WHERE 句 IN キーワード

どこにあるのか MySQL この句を IN キーワードと一緒に使用すると、値が IN キーワードで指定された値のリストと一致する行にのみ影響します。の MySQL IN ステートメントは、使用する必要がある OR 句の数を減らすのに役立ちます。
以下 MySQL WHERE IN クエリは、membership_number が 1 、 2 または 3 のいずれかである行を返します。
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

上記のスクリプトを実行すると、 MySQL 「myflixdb」に対するワークベンチでは、次の結果が生成されます。

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 rm@tstreet.com

– と組み合わせた WHERE 句 ありませんで キーワード

WHERE 句を NOT IN キーワードと一緒に使用すると、NOT IN キーワードで指定された値のリストと値が一致する行には影響しません。
次のクエリは、membership_numberが1、2、3ではない行を返します。
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

上記のスクリプトを実行すると、 MySQL 「myflixdb」に対するワークベンチでは、次の結果が生成されます。

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

– と組み合わせた WHERE 句 比較 Operaトー

WHERE句では、より小さい()、等しい(=)、等しくない()の比較演算子を使用できます。

= に等しい

次のスクリプトは、等しい比較演算子を使用して、メンバー テーブルからすべての女性メンバーを取得します。
SELECT * FROM `members` WHERE `gender` = 'Female';

上記のスクリプトを実行すると、 MySQL 「myflixdb」に対するワークベンチでは、次の結果が生成されます。

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

> 越える

次のスクリプトは、支払いテーブルから 2,000 を超えるすべての支払いを取得します。
SELECT * FROM `payments` WHERE `amount_paid` > 2000;
上記のスクリプトを実行すると、 MySQL 「myflixdb」に対するワークベンチでは、次の結果が生成されます。
payment_id membership_number payment_date description amount_paid external_reference_number
1 1 23-07-2012 Movie rental payment 2500 11
3 3 30-07-2012 Movie rental payment 6000 NULL

< > に等しくない

次のスクリプトは、カテゴリ ID が 1 ではないすべてのムービーを取得します。
SELECT * FROM `movies` WHERE `category_id`<> 1;
上記のスクリプトを実行すると、 MySQL 「myflixdb」に対するワークベンチでは、次の結果が生成されます。
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
5 Daddy's Little Girls NULL 2007 8
6 Angels and Demons NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8

まとめ

  • SQL WHERE 句は、SELECT、UPDATE、または 削除クエリ.
  • SQL の WHERE 条件は、AND や OR などの論理演算子、,= などの比較演算子と組み合わせて使用​​できます。
  • AND と一緒に使用する場合 論理演算子、すべての基準を満たす必要があります。
  • OR 論理演算子と一緒に使用する場合は、いずれかの条件を満たす必要があります。
  • キーワード IN は、値のリストに一致する行を選択するために使用されます。

ブレインティーザー

25 年 06 月 2012 日までに返却されなかったレンタル映画のリストを取得したいとします。これを実現するには、SQL WHERE ステートメント句を、より小さい比較演算子および AND 論理演算子と組み合わせて使用​​します。
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;

上記のスクリプトを実行すると、 MySQL ワークベンチでは次の結果が得られます。

reference_number transaction_date return_date membership_number movie_id movie_returned
14 21-06-2012 24-06-2012 2 2 0