2015-11-02 54 views
0

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

我想知道是否存在一个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`) 

+0

您能描述一下您的表吗? – davejal

+0

它应该如何选择这些记录?如果它是随机的,你可以使用ORDER BY RANDOM()LIMIT x',其中'x'是'COUNT(*)/ n'。 – Barmar

+0

@bustikiller检查我的编辑,包含您的列。 –

回答

2

你能做到这一点,子查询的查询,并添加行号到它:

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

国防部会选择每5行:5这里是你的n。所以第5行,然后10日,15日等

0

不是真的知道什么你问,但你有多种选择

  1. 您可以将搜索结果限制N(N代表要显示温度的量)

只是与端部限制的简单查询:

select * from tablename limit 1000 
  • 你可以使用一个时间/ d吃得克制,所以你只显示过去n天的结果。
  • 以下是使用日期函数的示例。以下查询从内过去30天选择与date_col的值的所有行:

    mysql> SELECT something FROM tbl_name 
        -> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col; 
    
  • 你可以选择一定时期的平均温度,周期越短你会得到结果。您可以按日期,年份,月份等分组以“创建期间”
  • 相关问题