Leetcode Note: Mysql - Rising Temperature

Rising Temperature - LeetCode
https://leetcode.com/problems/rising-temperature/

  • MySQL で取り組んだメモ

所感

  • 全然わからん

回答

Rising Temperature - LeetCode
https://leetcode.com/problems/rising-temperature/solution/

SELECT weather.id AS 'Id'
FROM weather
JOIN weather w 
    ON DATEDIFF(weather.recordDate, w.recordDate) = 1
    AND weather.Temperature > w.Temperature;
  • SELECT: SELECT weather.id AS 'Id'
    • Wheather Table に含まれる Id を抽出
  • FROM: FROM weather
    • Wheather Table から抽出
  • JOIN: JOIN weather w
  • ON:
    • JOIN で使う条件
    • DATEDIFF: DATEDIFF(weather.recordDate, w.recordDate) = 1
      • 日付の差を計算する関数
      • recordDate の差が 1 になる
        • 日付が 1日 異なるレコード
  • AND: AND weather.Temperature > w.Temperature
    • JOIN で使う条件
    • Temperature が大きい方

MySQL :: MySQL 8.0 リファレンスマニュアル :: 12.7 日付および時間関数
https://dev.mysql.com/doc/refman/8.0/ja/date-and-time-functions.html#function_datediff

DATEDIFF(expr1,expr2)
DATEDIFF() は、ある日付から別の日付までの日数の値として表現された expr1 − expr2 を返します。expr1 および expr2 は、日付または日付時間式です。 値の日付部分のみが計算に使用されます。

DATEDIFF も、シンプルに JOIN だけ書くやり方も知らなかった・・・
JOIN については挙動を理解していないとどっちのテーブルをベースに操作しているのか分からなくなりそう