sql >> Databasteknik >  >> RDS >> Mysql

Hur man får varje N:te rad i MySQL

Ibland kan du behöva hämta var n:e rad i MySQL, eller returnera var n:e rad i din tabell. I den här artikeln kommer vi att titta på hur man väljer var n:e rad i MySQL.


Hur får du var N:te rad i MySQL

Vi kommer att titta på två sätt att få varje N:te rad i en tabell – när du har en id-liknande kolumn med sekventiella nummer i den och när du inte har en.

Låt oss säga att du har följande tabell försäljning (id, belopp) . I vårt första exempel innehåller id-kolumnen sekventiella rad-ID – 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äsning:Hur man lägger till automatisk ökning i befintlig tabell

Här är SQL-frågan för att välja var n:e rad i MySQL.

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

I ovanstående fråga väljer vi i princip varje rad vars id mod n värde utvärderas till noll. Så vi får rader med id n, 2n, 3n, … Ersätt tabellnamn med ditt tabellnamn och n med var n:e rad som du vill returnera.

Här är ett exempel för att returnera varannan rad från försäljningstabellen.

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

Bonus Läs:Hur man hittar n:e raden i MySQL

Om din tabell inte har en id-liknande kolumn med sekventiella nummer lagrade, är här SQL-frågan för att hämta var n:e rad från tabellen.

Låt oss säga att du har följande tabell försäljning(orderdatum, belopp) som inte har en id-liknande kolumn.

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

Bonusläsning:Hur man replikerar MySQL-databas till en annan server

Här är SQL-frågan för att hämta var n:e rad 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 ovanstående fråga, ersätt [n] med den n:e raden som du vill få, ersätt [tabellnamn] med ditt tabellnamn och [kolumnnamn] med ditt kolumnnamn.

I ovanstående fråga använder vi kapslade frågor. I den inre frågan utvärderar och tilldelar radnummer för varje rad och lagrar det i en temporär variabel som kallas rownum. Den yttre frågan väljer rader med rownum mod n-värdet som noll.

Här är SQL-frågan för att välja varannan rad 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 |
+--------+--------+

Förhoppningsvis hjälper den här artikeln dig att välja var n:e rad i MySQL.

Ubiq gör det enkelt att visualisera data och övervaka dem i realtidsinstrumentpaneler. Prova Ubiq gratis.

  1. Hur skickar man e-post från SQL Server?

  2. Hur SIN() fungerar i MariaDB

  3. Returnera inkrementvärdet för en identitetskolumn i SQL Server

  4. Postgis installation:typ geometri existerar inte