JOINの結合条件にBETWEENを使用するはじめに
SQLのBETWEEN
は、指定した範囲内にある値を検索するための条件演算子です。
ひとつに合致する値を検索するイコールと異なり、範囲内にある値すべてを検索対象とすることができます。
あるテーブルの log_date の前後14日に入る 別テーブルの log_date のデータを取得したいケースがありました。そちらの実例をもとに解説できればと思います。
BETWEENの基本構文と使用例
BETWEEN基本構文
SELECT 列名 FROM テーブル名 WHERE 列名 BETWEEN 値1 AND 値2
BETWEEN
演算子は、指定した列の値が値1
以上かつ値2
以下の範囲に含まれる行を検索します。検索結果には、指定した列の値が含まれます。
BETWEEN使用例
たとえば、sales
というテーブルにamount
という列があり、特定の金額範囲内の売上データを検索する場合を考えてみましょう。
SELECT * FROM sales WHERE amount BETWEEN 1000 AND 5000
このクエリでは、sales
テーブルからamount
列が1000以上かつ5000以下の行が返されます。
BETWEEN
演算子は、数値だけでなく、日付や文字列などのデータ型でも使用することができます。ただし、データ型によっては予期しない結果が生じる場合があるため、適切なデータ型を使用するか、適切な形式でデータを比較する必要があります。
また、BETWEEN
演算子では、範囲の両端の値が含まれることに注意してください。もし両端の値を含めずに範囲検索を行いたい場合は、>
(より大きい)や<
(より小さい)演算子を使用して範囲を指定する必要があります。
JOINの結合条件にBETWEENを使用する
JOINの結合条件にBETWEENを使用する具体例
例として、2つのテーブル orders
と products
があり、orders
テーブルの order_date
カラムが products
テーブルの start_date
と end_date
カラムの範囲内にある場合にJOINする場合を考えます。
SELECT *
FROM orders
JOIN products ON orders.order_date BETWEEN products.start_date AND products.end_date
このクエリでは、orders
テーブルと products
テーブルを order_date
カラムが start_date
から end_date
の範囲内にある場合にJOINします。
JOIN BETWEENで前後14日を取得する例
次に、2つのテーブル t1
と t2
があり、t1
テーブルの log_date
カラムが t2
テーブルの log_date
の 前後14日の範囲内にあるデータを取得したい場合を考えます。
SELECT *
FROM t1
JOIN t2 ON t1.log_date BETWEEN date_format( date_add( t2.log_date, -14), 'yyyy-MM-dd' ) and date_format( date_add( t2.log_date, 14), 'yyyy-MM-dd' )
date_format( date_add( t2.log_date, -14), ‘yyyy-MM-dd’ ) 部分でt2テーブル log_date の前14日、date_format( date_add( t2.log_date, 14), ‘yyyy-MM-dd’ ) 部分でt2テーブル log_date の後ろ14日を取得しています。
これにより、上記範囲にある t1テーブルの log_date のデータが返されます。
「プログラムの環境構築からわからない、、」「データサイエンティストになるには?」など自己学習に不安がありましたら、以下のスクールのご活用をご検討ください!
JOINの結合条件にBETWEENを使用するまとめ
以上が、JOINとBETWEENを組み合わせて範囲内に入るデータを取得する際の実例となります。
似たケースの際にテーブル名や指定期間を修正してご活用いただければと思います!
SQL参考本
SQL学び始めの時はこちらの本を参考にしていました。
DBやテーブルの構造から、よく使う関数などがまとめられています。基礎を身につけたい方におススメかと思います。
SQL文法関連記事
そのほか、SQL関連記事をこちらにまとめておりますのでご参考ください。
> Coffee Tech Blog SQL関連記事
もしIT業界への転職でお困りでしたら、下記サービスのご活用をご検討ください!
私は転職の際にGeeklyを活用させて頂き、ご縁を頂くことができました。
参考になれば幸いです☕
コメント