题目

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

例如,根据上述给定的 Weather 表格,返回如下 Id:

解析

方法:使用 JOIN 和 DATEDIFF() 子句
算法

MySQL 使用 DATEDIFF 来比较两个日期类型的值。

因此,我们可以通过将 weather 与自身相结合,并使用 DATEDIFF() 函数。

MySQL

SELECT
    weather.id AS 'Id'
FROM
    weather
        JOIN
    weather w ON DATEDIFF(weather.date, w.date) = 1
        AND weather.Temperature > w.Temperature
;



答案

SELECT
    weather.id AS 'Id'
FROM
    weather
        JOIN
    weather w ON DATEDIFF(weather.recorddate, w.recorddate) = 1
        AND weather.Temperature > w.Temperature
;