Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment obtenir chaque nième ligne dans MySQL

Parfois, vous devrez peut-être obtenir chaque nième ligne dans MySQL ou renvoyer chaque nième ligne de votre table. Dans cet article, nous verrons comment sélectionner chaque nième ligne dans MySQL.


Comment obtenir chaque Nième ligne dans MySQL

Nous examinerons deux manières d'obtenir chaque Nième ligne d'un tableau :lorsque vous avez une colonne de type ID avec des numéros séquentiels, et lorsque vous n'en avez pas.

Disons que vous avez le tableau suivant ventes (id, montant) . Pour notre premier exemple, la colonne id contient des identifiants de ligne séquentiels - 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 |
+----+--------+

Lecture bonus :comment ajouter un incrément automatique dans un tableau existant

Voici la requête SQL pour sélectionner chaque nième ligne dans MySQL.

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

Dans la requête ci-dessus, nous sélectionnons essentiellement chaque ligne dont id mod n la valeur est évaluée à zéro. Nous obtenons donc des lignes avec id n, 2n, 3n, … Remplacez table_name avec le nom de votre table et n avec chaque nième ligne que vous souhaitez renvoyer.

Voici un exemple pour renvoyer toutes les 2 lignes de la table des ventes.

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

Lecture bonus :Comment trouver la nième ligne dans MySQL

Si votre table n'a pas de colonne de type id avec des numéros séquentiels stockés, voici la requête SQL pour obtenir chaque nième ligne de la table.

Supposons que vous ayez le tableau suivant ventes(date_commande, montant) qui n'a pas de colonne de type 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 |
+------------+--------+

Lecture bonus :comment répliquer une base de données MySQL sur un autre serveur

Voici la requête SQL pour récupérer chaque nième ligne dans MySQL.

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

Dans la requête ci-dessus, remplacez [n] par la nième ligne que vous souhaitez obtenir, remplacez [nom de la table] par le nom de votre table et [nom de la colonne] par le nom de votre colonne.

Dans la requête ci-dessus, nous utilisons des requêtes imbriquées. Dans la requête interne, évalue et attribue un numéro de ligne pour chaque ligne et le stocke dans une variable temporaire appelée rownum. La requête externe sélectionne les lignes avec la valeur rownum mod n égale à zéro.

Voici la requête SQL pour sélectionner une ligne sur 2 dans 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 |
+--------+--------+

Espérons que cet article vous aidera à sélectionner chaque nième ligne dans MySQL.

Ubiq facilite la visualisation des données et leur suivi dans des tableaux de bord en temps réel. Essayez Ubiq gratuitement.