2015-11-02 55 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; 
    
  • 你可以選擇一定時期的平均溫度,週期越短你會得到結果。您可以按日期,年份,月份等分組以「創建期間」
  • 相關問題