2013-04-25 70 views
3

我正在將給定信號的實時更改記錄到我的數據庫表中。如何從MySQL中的每10行中選擇1行

然後我畫線圖來顯示信號電平的變化。

我想要得到(10n + 1)th表中的行做出粗略圖。 10也是任意的。用戶可能會將其更改爲另一個值。

是否有人知道如何使這個只使用一個MySQL查詢

如果沒有,我會選擇所有數據後用PHP去。

這裏我表結構是:

|id  |signal1 |signal2 | signal 3 | 
+----------+----------+----------+------------+ 
|1   |0.41452 | 1.32135 | 0.31231 | 
... 
+0

你的表格結構是什麼樣的? – 2013-04-25 10:23:39

+0

你可以在輸入時使用'group by'(操作爲分組-ie格式ymd H:i)或更準確地使用行號http://stackoverflow.com/questions/3126972/mysql-row-number – Waygood 2013-04-25 10:25:18

+0

你需要記錄號碼1,10,20,30,40和50。如果只有50條記錄。 – 2013-04-25 10:27:37

回答

4

如果你有一個auto_incrememt ID列,您可以選擇,由N

SELECT * FROM tableName1 WHERE MOD(id,10)=0; 
// id divided by 10 with a remainder equal to 0 (exact) 

或不連續的列ID的

SELECT * FROM ( 
    SELECT 
     @row := @row +1 AS rowNum, colName1 
    FROM ( 
     SELECT @row :=0) r, tableName1 
    ) ranked 
WHERE rowNum % 10 = 1 
整除行
+2

請注意,只有在編號中沒有空格(沒有行被刪除)時,使用'mod(id,10)'纔會給出正確的結果。 – Jocelyn 2013-04-25 10:29:34

+0

太棒了!感謝大衛。 – zkanoca 2013-04-25 10:41:19

+0

很好用的MOD。感謝您的學習。 – 2013-04-25 10:43:25

0

如果你的表有自動增量ID(intID),那麼你應該試試這個代碼。只有26個記錄在我的桌子裏。

select * from tablename where intId 
     in (select case (intId%10=0) when 1 then intId else 0 end as x from tablename) 

輸出: -

10 sdf KK201300010 123456 Regular 
20 sdf KK201300020 123456 Regular 

它會在每10記錄顯示每個記錄。 希望它能幫助你。

+0

我期待實現這個代碼,你推薦到一個網站,但我有幾個問題。代碼究竟意味着什麼?它是如何翻譯的? 「以x結束」它在這裏做了什麼?你有建議如何最好地使用它與PHP? – 2015-10-09 06:10:09

+0

爲了更好地闡明,我試圖選擇每百行。我正在嘗試創建下一個按鈕,每按一下下一個按鈕或箭頭,就會拉動每100行。像分頁一樣,但沒有頁面的數量。 – 2015-10-09 06:16:30