温度上升----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