¿Cómo se selecciona cada n-ésima fila de MySQL?

Tengo una serie de valores en una base de datos que necesito extraer para crear un gráfico de líneas. Como no necesito una resolución alta, me gustaría volver a muestrear los datos seleccionando cada 5ª fila de la base de datos.

SELECT * FROM ( SELECT @row := @row +1 AS rownum, [column name] FROM ( SELECT @row :=0) r, [table name] ) ranked WHERE rownum % [n] = 1 

Podría probar el mod 5 para obtener filas donde el ID sea múltiplo de 5. (Asumiendo que tiene algún tipo de columna de identificación que es secuencial).

 select * from table where table.id mod 5 = 0; 

Como dijo que está utilizando MySQL, puede usar variables de usuario para crear una numeración de filas continua. Sin embargo, tienes que poner eso en una tabla derivada (subconsulta).

 SET @x := 0; SELECT * FROM (SELECT (@x:=@x+1) AS x, mt.* FROM mytable mt ORDER BY RAND()) t WHERE x MOD 5 = 0; 

Agregué ORDER BY RAND() para obtener un muestreo pseudoaleatorio, en lugar de permitir que cada quinta fila de la tabla desordenada esté en la muestra cada vez.


Un usuario anónimo intentó editar esto para cambiar x MOD 5 = 0 a x MOD 5 = 1 . Lo he cambiado a mi original.

Para el registro, uno puede usar cualquier valor entre 0 y 4 en esa condición, y no hay ninguna razón para preferir un valor sobre otro.

 SET @a = 0; SELECT * FROM t where (@a := @a + 1) % 2 = 0; 

He estado buscando algo como esto. La respuesta de Taylor y Bill me llevó a mejorar sus ideas.

table data1 tiene campos read_date, value que queremos seleccionar cada 2d registro de una consulta limitada por un rango read_date, el nombre de la tabla derivada es arbitrario y aquí se llama DT

consulta:

  SET @row := 0; SELECT * FROM ( SELECT @row := @row +1 AS rownum, read_date, value FROM data1 WHERE read_date>= 1279771200 AND read_date < = 1281844740 ) as DT WHERE MOD(rownum,2)=0 
 $Query = "SELECT * FROM ( SELECT @row := @row +1 AS rownum, posts.* FROM ( SELECT @row :=0) r, posts ) ranked WHERE rownum %3 =1"; 

donde las publicaciones son mi mesa: