数据库查询-查找与之前(昨天的)日期相比温度更高的所有日期的 Id

答案:

1.与昨天对比的数据(如果昨天没有数据,则不输出)

select distinct(w.Id) as Id from Weather w,Weather w1 where 
TO_DAYS(w.RecordDate)-TO_DAYS(w1.RecordDate) between 0 and 1 
and w.Temperature>w1.Temperature

select distinct(w.Id) as Id from Weather w,Weather w1 where TO_DAYS(w.RecordDate)-TO_DAYS(w1.RecordDate) between 0 and 1 and w.Temperature>w1.Temperature

2.离今天最近的有数据的时间(如果昨天没有数据,那么就找前天的数据,以此类推)

 select w.Id from Weather w,Weather w1 where w1.RecordDate=
(select max(w2.RecordDate)  from Weather w2 where  w.RecordDate>w2.RecordDate) 
and w.Temperature>w1.Temperature

select w.Id from Weather w,Weather w1 where w1.RecordDate=(select max(w2.RecordDate)  from Weather w2 where  w.RecordDate>w2.RecordDate) and w.Temperature>w1.Temperature

资料参考:

SELECT DISTINCT 语句

在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。

关键词 DISTINCT 用于返回唯一不同的值。

语法:

SELECT DISTINCT 列名称 FROM 表名称

今天

select * from 表名 where to_days(时间字段名) = to_days(now());

昨天

SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1

7天

SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)

近30天

SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名)

本月

SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )

上一月

SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 时间字段名, '%Y%m' ) ) =1

猜你喜欢

转载自blog.csdn.net/angryshan/article/details/82314245
id