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