我想从中选择记录'2013-04-01 00:00:00'
,'today'
但是,每天都有很多价值,因为它们每15分钟保存一个值,所以我只希望每天有第一个或最后一个值。
表架构:
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'
c中进行单个查询
EDIT2: 我有 64,260 条记录,table.value_magnitudes
执行和响应该查询需要很长时间,有时还会超时。
要获得每个日期的第一个条目,您可以做
select * from value_magnitudes
where id in
(
SELECT min(id)
FROM value_magnitudes
WHERE magnitude_id = 234
and date(reading_date) >= '2013-04-01'
group by date(reading_date)
)
问题内容: 我有一个表,用于存储带有时间点的值: 每天可能有很多值,一天中也可能只有一个值。现在,我想获取最接近给定时间的给定时间范围(例如一个月)中每一天的值。我只想每天获得一个值(如果有当天的记录),或者没有值(如果没有记录)。我的数据库是PostgreSQL。我对此很坚持。我可以获取时间跨度中的所有值,并以编程方式为每天选择最接近的值,但这将意味着从数据库中提取大量数据,因为一天中可能有很多
问题内容: MySQL语句中是否可以通过> = NOW()-1排序记录(通过日期戳),以便选择从今天到今天的所有记录? 问题答案: 从日期/时间函数的文档来看,您应该能够执行以下操作:
问题内容: 我有一个具有“约会表”和“服务表”的数据库。每个appt都有一个服务,每个服务都有一个价格。我想要的是一个查询,该查询将始终返回12行(每月一行),并包含几个月的总和(基于其服务ID)。到目前为止,我有: 当前,返回的内容如下: 问题是,如果一个月没有任何订单,我不会在查询中返回该月。我希望该月有一个记录,只是它的“ monthly_total”等于零。 以下是我希望查询返回的内容:
问题内容: 我有一个具有以下结构的表: 我想知道如何计算SQL中最近7天每天的记录数,然后将其作为整数返回。 目前,我编写了以下SQL查询: 但是,这仅返回过去7天的所有条目。如何计算过去7天每天的记录? 问题答案:
问题内容: 由于上次我并未真正提出正确的要求,因此我尝试对此问题进行一些细化。我本质上是在做这个查询: 其中## / ## / 是同一天。本质上,此查询旨在查找任何给定日期的“未结”订单数。唯一的问题是,我想在一年或一天的每一天中都这样做。我想如果我知道如何将## / / ####定义为变量,然后将计数按该变量分组,那么我可以使它起作用,但我不确定如何做到这一点- 或在那里也可能是另一种方式。我目
问题内容: 我试图从看起来像这样的数据库表结果中选择前2条记录 我试过这个查询 但是有些主题,例如失踪的地方,我什至尝试了以下链接的建议 如何选择每个组的前N行? 但是我为每个受检者得到两个以上 我究竟做错了什么? 问题答案: 您可以使用相关的子查询: 该查询通过串联三列来构造单列主键。如果您有真正的主键(如),则可以用代替。 SQL Fiddle中的示例。