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.