我想从'2013-04-01 00:00:00'
到'today'
之间选择记录,但每天都有很多值,因为它们每15分钟保存一个值,所以我只需要每天的第一个或最后一个值。SQL:如何每天选择一条记录(假设每天包含多个值)MySQL
表模式:
CREATE TABLE IF NOT EXISTS `value_magnitudes` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`value` float DEFAULT NULL,
`magnitude_id` int(11) DEFAULT NULL,
`sdi_belongs_id` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`reading_date` datetime DEFAULT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1118402 ;
坏SQL:
SELECT value FROM `value_magnitudes` WHERE `value_magnitudes`.`reading_date` BETWEEN '2013-04-01 00:00:00' AND '2013-04-02 00:00:00' AND (`value_magnitudes`.magnitude_id = 234) LIMIT 1
SELECT value FROM `value_magnitudes` WHERE `value_magnitudes`.`reading_date` BETWEEN '2013-04-02 00:00:00' AND '2013-04-03 00:00:00' AND (`value_magnitudes`.magnitude_id = 234) LIMIT 1
SELECT value FROM `value_magnitudes` WHERE `value_magnitudes`.`reading_date` BETWEEN '2013-04-03 00:00:00' AND '2013-04-04 00:00:00' AND (`value_magnitudes`.magnitude_id = 234) LIMIT 1
SELECT value FROM `value_magnitudes` WHERE `value_magnitudes`.`reading_date` BETWEEN '2013-04-04 00:00:00' AND '2013-04-05 00:00:00' AND (`value_magnitudes`.magnitude_id = 234) LIMIT 1
SELECT value FROM `value_magnitudes` WHERE `value_magnitudes`.`reading_date` BETWEEN '2013-04-05 00:00:00' AND '2013-04-06 00:00:00' AND (`value_magnitudes`.magnitude_id = 234) LIMIT 1
etc ...
我希望所有在一个可能的话......
谢谢你很多。
编辑: 我的意思是,我每天的查询,但我只是想从reading_date >= '2013-04-01 00:00:00'
使单个查询ç
EDIT2: 我在table.value_magnitudes
记录和它需要sooooooooo很长的时间才能执行和响应该查询,有时会超时连接。
但如果我这样做,我会做一个查询的每一天,直到我达到今天,是否有可能在一个查询?谢谢。 – rokimoki 2013-05-10 10:33:17
是的,将日期保留在where条件中。我更新了我的答案。 – 2013-05-10 10:34:17
Aham,但我想从X日期开始,到今天,所以它会像'reading_date> ='2013-04-01 00:00:00'' – rokimoki 2013-05-10 10:39:23