作者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
1F:推 freewhat:我大致上看懂你的作法了,我星期一拿到电脑再试试看 03/13 14:59
2F:→ freewhat:感谢 03/13 15:04
3F:→ gohomexx:如果只是要2点的最後一笔,就select top1 再order by date 03/16 13:17
4F:推 JoeHorn:楼上... 人家在提 MySQL ... 03/17 02:19