温度上升----mysql变量使用


表: Weather

+---------------+---------+
| Column Name | Type |
+---------------+---------+
| id | int |
| recordDate | date |
| temperature | int |
+---------------+---------+
id 是这个表的主键
该表包含特定日期的温度信息
 

编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 id 。

返回结果 不要求顺序 。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/rising-temperature
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

Mysql解法:

1.变量解法

select     Id from     (select w.*,      @curd := w.RecordDate,       #当前日期      @curt := w.Temperature,       #当前温度      @isH := if(datediff(@curd,@pred) = 1 and @curt > @pret,1,0) as r,               #当当前日期比前一个日期大一天时,且当前温度大于昨日温度 为真      @pret := @curt,  #赋值昨日 日期           @pred := @curd  #赋值昨日温度     #这五个变量赋值顺序很重要  !!  前两个步骤负责赋值今日数据,判断真假 在赋值给昨日    #这样每一行数据进来先判断当日数据是否比昨日温度大 然后将当日数据赋值给昨日的变量         from         Weather w,         (select              @curd := null,             @pred := null,             @curt := 0,             @pret := 0,             @isH := 0         ) init    #初始化变量      order by w.RecordDate     #order by先于select执行    先排序在查询  确保日期又近到远     ) t where     t.r = 1