作者fsz570 (570)
看板Database
標題Re: [SQL ] select 語法的問題
時間Sat Mar 13 14:50:07 2010
對 MySQL 不太熟
底下的語法應該可以達成你要的功能
SELECT ID, VALUE, DATE_TIME
FROM DATE_TEST MAIN,(SELECT MAX(DATE_TIME) DATE_TIME2
FROM DATE_TEST
GROUP BY DATE_FORMAT(DATE_TIME, '%Y%m%d%H')) MAX_DATE
WHERE MAIN.DATE_TIME = MAX_DATE.DATE_TIME2;
這只計算到小時,萬一同一小時內有多筆資料,就會查詢出多筆結果
也許你會想再限制其它條件,如下
SELECT ID, VALUE, DATE_TIME
FROM DATE_TEST MAIN,(SELECT MAX(ID) ID2, MAX(DATE_TIME) DATE_TIME2
FROM DATE_TEST
GROUP BY DATE_FORMAT(DATE_TIME, '%Y%m%d%H')) MAX_DATE
WHERE MAIN.DATE_TIME = MAX_DATE.DATE_TIME2
AND MAIN.ID = MAX_DATE.ID2;
※ 引述《freewhat (這就是人生嗎)》之銘言:
: 大家好,我用的是Mysql,
: 這邊遇到一個問題,想請問是否能用一句sql語法就解決掉。
: id datetime value
: -- -------------- ------
: 1 2010-01-01 02:30 30
: 2 2010-01-01 02:40 15
: 3 2010-01-01 02:55 20
: 4 2010-01-01 03:00 10
: ...
: 2010-01-01 03:55 20
: 2010-01-01 04:10 25
: 2010-01-01 04:50 55
: 2010-01-01 05:10 20
: 我想要查出某日期下,某時的最後一筆 value為何
: 例如上面例子為
: datetime value
: ---------------- ------
: 2010-01-01 02 20
: 2010-01-01 03 20
: 2010-01-01 04 55
: 如果用多筆語法我是會,不過要用單一語法解決想了很久不知如處理。
: 謝謝。
※ 引述《freewhat (這就是人生嗎)》之銘言:
: 大家好,我用的是Mysql,
: 這邊遇到一個問題,想請問是否能用一句sql語法就解決掉。
: id datetime value
: -- -------------- ------
: 1 2010-01-01 02:30 30
: 2 2010-01-01 02:40 15
: 3 2010-01-01 02:55 20
: 4 2010-01-01 03:00 10
: ...
: 2010-01-01 03:55 20
: 2010-01-01 04:10 25
: 2010-01-01 04:50 55
: 2010-01-01 05:10 20
: 我想要查出某日期下,某時的最後一筆 value為何
: 例如上面例子為
: datetime value
: ---------------- ------
: 2010-01-01 02 20
: 2010-01-01 03 20
: 2010-01-01 04 55
: 如果用多筆語法我是會,不過要用單一語法解決想了很久不知如處理。
: 謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.222.186
推 freewhat:我大致上看懂你的作法了,我星期一拿到電腦再試試看 03/13 14:59
→ freewhat:感謝 03/13 15:04
→ gohomexx:如果只是要2點的最後一筆,就select top1 再order by date 03/16 13:17
推 JoeHorn:樓上... 人家在提 MySQL ... 03/17 02:19