Czasami może zajść potrzeba pobrania każdego n-tego wiersza w MySQL lub zwrócenia każdego n-tego wiersza w tabeli. W tym artykule przyjrzymy się, jak wybrać każdy n-ty wiersz w MySQL.
Jak uzyskać każdy N-ty wiersz w MySQL
Przyjrzymy się dwóm sposobom uzyskania każdego N-tego wiersza w tabeli – gdy masz kolumnę typu id z kolejnymi numerami w niej i gdy jej nie masz.
Załóżmy, że masz następującą tabelę sprzedaż (identyfikator, kwota) . W naszym pierwszym przykładzie kolumna id zawiera kolejne identyfikatory wierszy – 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 | +----+--------+
Przeczytaj bonus:Jak dodać automatyczny przyrost w istniejącej tabeli
Oto zapytanie SQL, aby wybrać co n-ty wiersz w MySQL.
mysql> select * from table_name where table_name.id mod n = 0;
W powyższym zapytaniu zasadniczo wybieramy każdy wiersz, którego id mod n wartość oceniana na zero. Więc otrzymujemy wiersze o identyfikatorach n, 2n, 3n, … Zastąp nazwa_tabeli z nazwą twojej tabeli i n z każdym n-tym wierszem, który chcesz zwrócić.
Oto przykład zwracania co drugi wiersz z tabeli sprzedaży.
mysql> select * from sales where sales.id mod 2 = 0; +----+--------+ | id | amount | +----+--------+ | 2 | 300 | | 4 | 150 | +----+--------+
Przeczytaj bonus:Jak znaleźć n-ty wiersz w MySQL
Jeśli w Twojej tabeli nie ma kolumny typu id z zapisanymi kolejnymi numerami, oto zapytanie SQL, aby uzyskać co n-ty wiersz z tabeli.
Załóżmy, że masz następującą tabelę sprzedaż(data_zamówienia, kwota) który nie ma kolumny typu 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 | +------------+--------+
Przeczytaj bonus:Jak zreplikować bazę danych MySQL na inny serwer
Oto zapytanie SQL do pobrania każdego n-tego wiersza w MySQL.
SELECT * FROM ( SELECT @row := @row +1 AS rownum, [column name] FROM ( SELECT @row :=0) r, [table name] ) ranked WHERE rownum % [n] = 0
W powyższym zapytaniu zastąp [n] n-tym wierszem, który chcesz uzyskać, zastąp [nazwa tabeli] nazwą swojej tabeli i [nazwa kolumny] nazwą kolumny.
W powyższym zapytaniu używamy zapytań zagnieżdżonych. W wewnętrznym zapytaniu ocenia i przypisuje numer wiersza dla każdego wiersza i przechowuje go w tymczasowej zmiennej o nazwie rownum. Zewnętrzne zapytanie wybiera wiersze z wartością rownum mod n jako zero.
Oto zapytanie SQL do wybrania co drugiego wiersza w 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 | +--------+--------+
Mam nadzieję, że ten artykuł pomoże Ci wybrać każdy n-ty wiersz w MySQL.
Ubiq ułatwia wizualizację danych i monitorowanie ich w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj Ubiq za darmo.