sql >> Database teknologi >  >> RDS >> Mysql

Sådan får du hver Nth Row i MySQL

Nogle gange skal du muligvis hente hver n'te række i MySQL, eller returnere hver n'te række i din tabel. I denne artikel vil vi se på, hvordan man vælger hver n'te række i MySQL.


Sådan får du hver n. række i MySQL

Vi vil se på to måder at få hver N. række i en tabel på – når du har en id-lignende kolonne med fortløbende numre i den, og når du ikke har en.

Lad os sige, at du har følgende tabel salg (id, beløb) . For vores første eksempel indeholder id-kolonnen sekventielle række-id'er – 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 |
+----+--------+

Bonuslæser:Sådan tilføjes automatisk stigning i eksisterende tabel

Her er SQL-forespørgslen til at vælge hver n'te række i MySQL.

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

I ovenstående forespørgsel vælger vi stort set hver række, hvis id mod n værdien evalueres til nul. Så vi får rækker med id n, 2n, 3n, … Erstat tabelnavn med dit tabelnavn og n med hver n'te række, du vil returnere.

Her er et eksempel på at returnere hver 2. række fra salgstabellen.

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

Bonus Læs:Sådan finder du n'te række i MySQL

Hvis din tabel ikke har en id-lignende kolonne med sekventielle numre gemt, så er her SQL-forespørgslen til at hente hver n'te række fra tabellen.

Lad os sige, at du har følgende tabel salg(ordre_dato, beløb) som ikke har en id-lignende kolonne.

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 |
+------------+--------+

Bonus Læs:Sådan replikeres MySQL-database til en anden server

Her er SQL-forespørgslen til at hente hver n'te række i MySQL.

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

I ovenstående forespørgsel skal du erstatte [n] med den n. række, du vil have, erstatte [tabelnavn] med dit tabelnavn og [kolonnenavn] med dit kolonnenavn.

I ovenstående forespørgsel bruger vi indlejrede forespørgsler. I den indre forespørgsel evaluerer og tildeler rækkenummer for hver række og gemmer det i en midlertidig variabel kaldet rownum. Den ydre forespørgsel vælger rækker med værdien rownum mod n som nul.

Her er SQL-forespørgslen til at vælge hver 2. række i 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 |
+--------+--------+

Forhåbentlig hjælper denne artikel dig med at vælge hver n'te række i MySQL.

Ubiq gør det nemt at visualisere data og overvåge dem i dashboards i realtid. Prøv Ubiq gratis.

  1. Data tutorial:Brug af vinduesfunktioner

  2. Sådan konverteres et heltal til en decimal i SQL Server

  3. Sådan gemmer du gentagne datoer med sommertid i tankerne

  4. TIME_FORMAT() Eksempler – MySQL