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.