1. 程式人生 > >資料庫查詢-查詢與之前(昨天的)日期相比溫度更高的所有日期的 Id

資料庫查詢-查詢與之前(昨天的)日期相比溫度更高的所有日期的 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