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.