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

⚡ スマートサマリー

MySQL WHERE句は、結果セットに到達する前に行をフィルタリングし、SELECT、UPDATE、DELETE文に正確な条件を適用します。AND、OR、IN、NOT IN、および比較演算子を理解することで、初心者でもクエリに必要なレコードを正確に取得できます。

  • 🔍 主な目的: WHERE句は、ステートメントが操作する行を制限するため、SELECT、UPDATE、DELETEは一致する行のみに影響を与えます。
  • 🔗 そして Operaトール: すべての条件が真と評価された場合にのみ行が返されるため、結果セットが絞り込まれます。
  • 🔀 OR Operaトール: いずれかの条件が真と評価された場合、結果セットが拡大され、行が返されます。
  • ???? 含まれるものと含まれないもの: INキーワードは、1つの式内の値のリストに一致することを示し、NOT INキーワードは同じリストを除外します。
  • <XNUMXxEXNUMX><XNUMXxEXNUMX><XNUMXxXNUMXA><XNUMXxXNUMX><XNUMXxXNUMXA>️️ 比較 Operators: 等しい(=)、より大きい(>)、より小さい(<)、等しくない(<>)で、数値、テキスト、日付の列をフィルタリングします。
  • ⚠️ NULL値の処理: NULLは=や<>とは一致しないため、欠損値をテストするにはIS NULLとIS NOT NULLが必要です。

WHERE句とは何ですか MySQL?

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

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

しかし、クエリ結果を特定の条件に制限したい場合もあります。SQL の WHERE 句はこのような状況で役立ち、 削除または更新クエリ SELECTクエリの場合と同様です。

の WHERE 句 MySQL

WHERE 句の構文

WHERE句の基本的な構文は以下のとおりです。

SELECT * FROM tableName WHERE condition;

Pr_media

  • 「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 と 論理演算子.

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

AND論理演算子を使用すると、指定されたすべての条件が満たされた場合にのみ行が返されます。

2008年に公開されたカテゴリー2の映画をすべて取得したいとします。以下のスクリプトでそれが可能です。

SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;

上記のスクリプトを「myflixdb」に対して実行すると、次の結果が得られます。

movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

AND演算子は結果セットを絞り込みます。OR演算子は結果セットを広げます。

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

OR演算子を使用すると、指定された条件のいずれかが満たされた場合に、行が返されます。

以下のスクリプトは、カテゴリ1またはカテゴリ2のいずれかに属するすべての映画を取得します。

SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;

結果セットを以下に示します。

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

OR条件を複数連結すると、コードが読みにくくなります。INキーワードを使うことで、この問題を解決できます。

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

WHERE句をINキーワードと併用すると、指定されたリストに一致する値を持つ行のみが対象となります。INを使用することで、通常であれば記述する必要のあるOR句の数を減らすことができます。

以下 MySQL WHERE IN クエリは、membership_number が 1、2、または 3 のいずれかである行を返します。

SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

結果セットを以下に示します。

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

NOT INは逆のフィルター処理を実行します。

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

NOT INキーワードを使用すると、WHERE句は指定されたリストに一致する値を持つすべての行を除外します。

以下のクエリは、membership_numberが1、2、または3ではない行を取得します。

SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

結果セットを以下に示します。

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句は、比較演算子を使用して、値のサイズと等価性に基づいて値をフィルタリングします。

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

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

= に等しい

次のスクリプトは、等しい比較演算子を使用して、メンバー テーブルからすべての女性メンバーを取得します。

SELECT * FROM `members` WHERE `gender` = 'Female';

結果セットを以下に示します。

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;

結果セットを以下に示します。

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;

結果セットを以下に示します。

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

クイックリファレンス:WHERE句 Operaトー

WHERE と最もよく組み合わせられる演算子を以下にまとめます。完全な定義は、 MySQL オペレーターリファレンス.

Operator 意味 例となる条件
= に等しい `gender` = '女性'
<> 等しくない `category_id` <> 1
> / より大きい/より小さい `amount_paid` > 2000
および/または すべての基準/いずれかの基準 `category_id` = 2 かつ `year_released` = 2008
含まれる/含まれない リストに一致する/除外する `membership_number` IN (1,2,3)
NULLである/NULLではない 欠損値の検定 `postal_address` が NULL です

⚠️注意: NULL は、= や <> とは一致しません。列に値が格納されない可能性がある場合は、IS NULL または IS NOT NULL を使用してください。

脳トレ:返却が遅れた映画を探す

2012年06月25日の締め切り日までに返却されなかったレンタル映画を取得したいとします。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

よくあるご質問

WHERE句は、グループの前に個々の行をフィルタリングします。pingそのため、集計関数を参照することはできません。HAVING は GROUP BY の実行後にグループをフィルタリングするため、COUNT(*) > 5 などの条件を指定するのに適しています。

IS NULL または IS NOT NULL を使用してください。 Opera= や <> などの演算子は NULL に対して unknown を返すため、`postal_address` = NULL は何も一致しませんが、`postal_address` IS NULL は機能します。

はい、フィルタリングされた列にインデックスが付けられると、 MySQL テーブルをスキャンする代わりに、一致する行のみを読み取ります。ping YEAR(`date_of_birth`) = 1980 のような関数内の列は、インデックスの使用を妨げます。

はい。AIアシスタントは平易な英語をSQLに変換し、 MySQL ワークベンチ 結果を実行できます。 Revモデルが列名を勝手に作成する可能性があるため、すべての条件をスキーマと照らし合わせて確認してください。

まずSELECTでテストしてください。間違ったWHERE句は 削除または更新クエリ すべての行を変更できます。一致した行をプレビューした後、書き込み時に同じ条件を再利用します。