SQL WHERE

WHERE

はじめに

WHERE は検索条件をフィルタするための便利なコマンドで
基本形4パターンの検索、更新、削除、挿入の全てと一緒に使えます

Excelで言うとフィルターボタンでカラムの値をフィルタできます

WHEREコマンドはこれを文字で書くイメージです

WHEREのサンプル

WHERE カラム名=値

が基本の形です

下記の例では
SELECT * FROM product WHERE 商品名 =”ドリップコーヒー”
productテーブルから
「商品名カラムの値が “ドリップコーヒー” のデータを探して」
というコマンドになります

Excelでフィルターで”ドリップコーヒー”を選んでフィルタしてるのと同じです
SQLは文字で打つだけの違いでそんなに難しくはないですよね

 テーブル名: product
  商品番号 カテゴリー 商品名 サイズ 価格 販売日
1 P1001 コーヒー ドリップコーヒー ショート 290 2021/01/01
2 P1002 コーヒー ドリップコーヒー トール 330 2021/02/01
3 P1003 コーヒー ドリップコーヒー グランデ 370 2021/03/01
4 P1004 コーヒー ドリップコーヒー ベンティ 410 2021/04/01

もう一歩

複数条件

複数の条件を組み合わせるには

AND A「かつ」B 前後の条件を両方含む
OR A「もしくは」B 前後の条件のどちらかを含む

の接続詞でつなぎます

商品名=”ドリップコーヒー” AND 価格=330 商品名=”ドリップコーヒー” かつ 価格=330 を探してきて

商品名=”ドリップコーヒー” OR 価格=330 商品名=”ドリップコーヒー” もしくは 価格=330 を探してきて

となります
ANDの例では、両方条件を満たした、¥330のドリップコーヒーのデータが
ORの例では、ドリップコーヒー(価格は関係ない)と価格が330(商品名は問わない)データが返ってきます

演算子

= の他にも
> < >= <=
などの演算子も使えます

例: 価格>= 330

実践

INのページでも紹介してますが
WHEREの中にさらにもう一つ SELECT のクエリ(サブクエリ)を入れる方法があります

SELECT * FROM product WHERE 商品名
IN ( SELECT 商品名 FROM sales WHERE 売上 >= 500 )

productとsalesの2つのテーブルから「500円以上の売上げがあった商品情報を探して」というコマンドになります

2つ構文があって難しそうにみえますが、ひとつずつみていきましょう

まずは IN カッコの中から
SELECT 商品名 FROM sales WHERE 売上 >= 500
sales テーブルから売上が500円以上の商品名を探してきてというコマンドになります

「商品名」が返ってくるので、“ドリップコーヒー”, “カフェミスト”, ”アイスコーヒー” のような結果になります
これって最初にやった IN の中身と同じですよね

続いて外側をみていきましょう
SELECT * FROM product WHERE 商品名 IN
なので、返ってきた商品名をpruductテーブルから検索して、という事になり

チェックポイント

IN の内側のクエリで返す値は1種類 & 外側のカラムと一致する必要があります
IN ( SELECT * FROM sales WHERE 売上 >= 500 ) としてしまうとデータベースがどのカラムと一致させたらよいか分からなくなってしまうので
商品名 IN ( SELECT 商品名 FROM sales WHERE 売上 >= 500 ) のようにそろえてあげましょう

クイズ


下記のテーブルからサイズがショートで価格が¥300以下、もしく価格が¥450以上の商品番号を探してみてください



 テーブル名: product
  商品番号 カテゴリー 商品名 サイズ 価格(円) 販売日
1 P1001 コーヒー ドリップコーヒー – ダークロースト ショート 290 2021/01/01
2 P1002 コーヒー ドリップコーヒー – ダークロースト トール 330 2021/02/01
3 P1003 コーヒー ドリップコーヒー – ダークロースト グランデ 370 2021/03/01
4 P1004 コーヒー ドリップコーヒー – ダークロースト ベンティ 410 2021/04/01
5 P1010 コーヒー カフェミスト ショート 340 2021/01/01
6
P1011
コーヒー カフェミスト トール
380
2021/02/01
7 P1012 コーヒー カフェミスト グランデ 420 2021/03/01
8 P1013 コーヒー カフェミスト ベンティ 460 2021/04/01

あわせてご覧ください

SQL CASE

SQL

SQL Tips

Read More

EXCEL HYPERLINK

Excel

Excel EOMONTHの使い方を分かりやすい例で紹介

Read More