检索每n条记录中的一条

时间:2015-11-02 20:32:15

标签: mysql database

我有一张包含数千条记录的表格,这些记录代表某个时刻房间的温度。到目前为止,我一直使用JQuery渲染温度的客户端图。但是,随着记录数量的增加,我认为向视图提供如此多的数据是没有意义的,如果它无法在单个图形中表示它们。

我想知道是否存在一个MySQL查询,它返回表中每个 n 记录中的一个。如果是这样的话,我想我可以在一段时间内获得有代表性的温度测量样本。

有什么想法吗?提前谢谢。

修改:添加表格结构。

CREATE TABLE IF NOT EXISTS `temperature` (
  `nid` int(10) unsigned NOT NULL COMMENT 'Node identifier',
  `temperature` float unsigned NOT NULL COMMENT 'Temperature in Celsius degrees',
  `timestamp` int(10) unsigned NOT NULL COMMENT 'Unix timestamp of the temperature record',
  PRIMARY KEY (`nid`,`timestamp`)

2 个答案:

答案 0 :(得分:2)

您可以执行此操作,子查询是您的查询,并为其添加行号:

SET @rows=0;
SELECT * from(
   SELECT @rows:=@rows+1 AS rowNumber,nid,temperature,`timestamp`
   FROM temperature
) yourQuery
WHERE MOD(rowNumber, 5)=0

mod会选择每隔5行:这里的5就是你的n。所以第5行,然后是第10行,第15行等。

答案 1 :(得分:0)

不确定您的要求但有多种选择

  1. 您可以将结果限制为n(n代表您想要显示的温度)
  2. 只是一个带有限制的简单查询:

    select * from tablename limit 1000
    
    1. 您可以使用时间/日期约束,因此仅显示最近n天的结果。
    2. 以下是使用日期函数的示例。以下查询选择最近30天内具有date_col值的所有行:

      mysql> SELECT something FROM tbl_name
          -> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;
      
      1. 您可以选择特定时期的平均温度,时间越短,您获得的结果就越多。您可以按日期,周年,月份等分组到&#34;创建期间&#34;