Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como obter cada enésima linha no MySQL


Às vezes você pode precisar obter cada enésima linha no MySQL ou retornar toda enésima linha em sua tabela. Neste artigo veremos como selecionar cada enésima linha no MySQL.



Como obter cada enésima linha no MySQL


Veremos duas maneiras de obter cada enésima linha em uma tabela - quando você tem uma coluna tipo id com números sequenciais e quando não tem uma.

Digamos que você tenha a seguinte tabela vendas (id, quantidade) . Para nosso primeiro exemplo, a coluna id contém ids de linha sequenciais – 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 |
+----+--------+

Bônus de leitura:Como adicionar incremento automático na tabela existente

Aqui está a consulta SQL para selecionar cada enésima linha no MySQL.
mysql> select * from table_name where table_name.id mod n = 0;

Na consulta acima, basicamente selecionamos cada linha cujo id mod n valor é avaliado como zero. Assim, obtemos linhas com id n, 2n, 3n, … Substitua table_name com o nome da sua tabela e n com cada enésima linha que você deseja retornar.

Aqui está um exemplo para retornar cada 2ª linha da tabela de vendas.
mysql> select * from sales where sales.id mod 2 = 0;
+----+--------+
| id | amount |
+----+--------+
|  2 |    300 |
|  4 |    150 |
+----+--------+

Bônus de leitura:Como encontrar a enésima linha no MySQL

Se sua tabela não tiver uma coluna do tipo id com números sequenciais armazenados, aqui está a consulta SQL para obter cada enésima linha da tabela.

Digamos que você tenha a seguinte tabela vendas(data_pedido, quantidade) que não tem uma coluna do 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 |
+------------+--------+

Bônus de leitura:Como replicar o banco de dados MySQL para outro servidor

Aqui está a consulta SQL para recuperar cada enésima linha no MySQL.
SELECT * 
FROM ( 
    SELECT 
        @row := @row +1 AS rownum, [column name] 
    FROM ( 
        SELECT @row :=0) r, [table name] 
    ) ranked 
WHERE rownum % [n] = 0

Na consulta acima, substitua [n] pela enésima linha que você deseja obter, substitua [nome da tabela] pelo nome da sua tabela e [nome da coluna] pelo nome da coluna.

Na consulta acima, usamos consultas aninhadas. Na consulta interna avalia e atribui o número de linha para cada linha e o armazena em uma variável temporária chamada rownum. A consulta externa seleciona linhas com o valor rownum mod n como zero.

Aqui está a consulta SQL para selecionar cada 2ª linha no 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 |
+--------+--------+

Espero que este artigo o ajude a selecionar cada enésima linha no MySQL.

O Ubiq facilita a visualização de dados e o monitoramento em painéis em tempo real. Experimente o Ubiq gratuitamente.