sql >> Base de Datos >  >> RDS >> Mysql

Cómo obtener cada enésima fila en MySQL

A veces, es posible que necesite obtener cada enésima fila en MySQL, o devolver cada enésima fila en su tabla. En este artículo veremos cómo seleccionar cada fila enésima en MySQL.


Cómo obtener cada enésima fila en MySQL

Veremos dos formas de obtener cada N-ésima fila en una tabla:cuando tiene una columna tipo id con números secuenciales y cuando no tiene uno.

Digamos que tiene la siguiente tabla ventas (id, cantidad) . Para nuestro primer ejemplo, la columna de identificación contiene identificaciones de fila secuenciales:1, 2, 3, …

mysql> create table sales(id int, amount int);
mysql> insert into sales(id,amount)
       values(1,100),
       (2,300),
       (3,250),
       (4,150),
       (5,200);

mysql> select * from sales;
+----+--------+
| id | amount |
+----+--------+
|  1 |    100 |
|  2 |    300 |
|  3 |    250 |
|  4 |    150 |
|  5 |    200 |
+----+--------+

Lectura adicional:Cómo agregar un incremento automático en una tabla existente

Aquí está la consulta SQL para seleccionar cada enésima fila en MySQL.

mysql> select * from table_name where table_name.id mod n = 0;

En la consulta anterior, básicamente seleccionamos cada fila cuyo id mod n el valor se evalúa como cero. Entonces obtenemos filas con id n, 2n, 3n, … Reemplace table_name con el nombre de su tabla y n con cada fila n que desee devolver.

Aquí hay un ejemplo para devolver cada 2 filas de la tabla de ventas.

mysql> select * from sales where sales.id mod 2 = 0;
+----+--------+
| id | amount |
+----+--------+
|  2 |    300 |
|  4 |    150 |
+----+--------+

Lectura adicional:cómo encontrar la enésima fila en MySQL

Si su tabla no tiene una columna similar a una identificación con números secuenciales almacenados, aquí está la consulta SQL para obtener cada enésima fila de la tabla.

Supongamos que tiene la siguiente tabla ventas (fecha_pedido, cantidad) que no tiene una columna tipo id.

mysql> create table sales2(order_date date, amount int);

mysql> insert into sales2(order_date,amount)
       values('2020-10-01',100),
       ('2020-10-02',300),
       ('2020-10-03',250),
       ('2020-10-04',150),
       ('2020-10-05',200);

mysql> select * from sales2;
+------------+--------+
| order_date | amount |
+------------+--------+
| 2020-10-01 |    100 |
| 2020-10-02 |    300 |
| 2020-10-03 |    250 |
| 2020-10-04 |    150 |
| 2020-10-05 |    200 |
+------------+--------+

Lectura adicional:Cómo replicar una base de datos MySQL en otro servidor

Aquí está la consulta SQL para recuperar cada enésima fila en MySQL.

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

En la consulta anterior, reemplace [n] con la enésima fila que desea obtener, reemplace [nombre de la tabla] con el nombre de su tabla y [nombre de la columna] con el nombre de su columna.

En la consulta anterior, usamos consultas anidadas. En la consulta interna, evalúa y asigna un número de fila para cada fila y lo almacena en una variable temporal llamada número de fila. La consulta externa selecciona filas con el valor de mod n de número de fila como cero.

Aquí está la consulta SQL para seleccionar cada segunda fila en MySQL.

mysql> SELECT *
       FROM (
           SELECT
              @row := @row +1 AS rownum, amount
          FROM (
              SELECT @row :=0) r, sales2
          ) ranked
      WHERE rownum % 2 = 0;
+--------+--------+
| rownum | amount |
+--------+--------+
|      2 |    300 |
|      4 |    150 |
+--------+--------+

Con suerte, este artículo lo ayudará a seleccionar cada enésima fila en MySQL.

Ubiq facilita la visualización de datos y la supervisión en paneles en tiempo real. Prueba Ubiq gratis.