一、题目
二、分析
本题的难点在于两点: ① 如何对比时间 => 可以使用 DATEDIFF 函数进行对比
② 如何对比前一天的时间 => 使用交叉联接
三、语句
3.1 使用 DATEDIFF 结合交叉联接实现查询
SELECTa.Id
FROMWeather aCROSS JOIN Weather b
WHEREDATEDIFF( a.RecordDate, b.RecordDate )= 1 AND a.Temperature > b.Temperature
3.2 使用 DATEDIFF 结合内联接实现查询
SELECTa.Id
FROMWeather aINNER JOIN Weather b
WHEREDATEDIFF( a.RecordDate, b.RecordDate )= 1 AND a.Temperature > b.Temperature
四、知识点
4.1 时间函数 datediff
datediff(日期1, 日期2): 得到的结果是日期1与日期2相差的天数。
如果日期1比日期2大,结果为正;如果日期1比日期2小,结果为负。
4.2 交叉联接
使用交叉查询,会将两张表进行笛卡尔积,如 A 表有 1000 条数据,B 表有 2000 条数据,则使用交叉联接后数据量为:
1000 * 2000 = 20w 条。