2013-04-25 69 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