Někdy možná budete muset získat každý n-tý řádek v MySQL nebo vrátit každý n-tý řádek v tabulce. V tomto článku se podíváme na to, jak vybrat každý n-tý řádek v MySQL.
Jak získat každý N-tý řádek v MySQL
Podíváme se na dva způsoby, jak získat každý N-tý řádek v tabulce – když máte sloupec podobný id s pořadovými čísly, a když žádný nemáte.
Řekněme, že máte následující tabulku prodej (id, částka) . V našem prvním příkladu sloupec id obsahuje sekvenční ID řádků – 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 |
+----+--------+ Bonusové čtení:Jak přidat automatický přírůstek do existující tabulky
Zde je dotaz SQL pro výběr každého n-tého řádku v MySQL.
mysql> select * from table_name where table_name.id mod n = 0;
Ve výše uvedeném dotazu v podstatě vybereme každý řádek, jehožid mod n hodnota se vyhodnotí na nulu. Dostaneme tedy řádky s id n, 2n, 3n, … Nahraďte název_tabulky s názvem vaší tabulky a n s každým n-tým řádkem, který chcete vrátit.
Zde je příklad vrácení každého 2. řádku z prodejní tabulky.
mysql> select * from sales where sales.id mod 2 = 0; +----+--------+ | id | amount | +----+--------+ | 2 | 300 | | 4 | 150 | +----+--------+
Bonusové čtení:Jak najít n-tý řádek v MySQL
Pokud vaše tabulka nemá sloupec podobný id s uloženými sekvenčními čísly, pak zde je dotaz SQL pro získání každého n-tého řádku z tabulky.
Řekněme, že máte následující tabulku prodej (datum_objednávky, částka) který nemá sloupec podobný 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 |
+------------+--------+ Bonusové čtení:Jak replikovat databázi MySQL na jiný server
Zde je dotaz SQL pro načtení každého n-tého řádku v MySQL.
SELECT *
FROM (
SELECT
@row := @row +1 AS rownum, [column name]
FROM (
SELECT @row :=0) r, [table name]
) ranked
WHERE rownum % [n] = 0
Ve výše uvedeném dotazu nahraďte [n] n-tým řádkem, který chcete získat, nahraďte [název tabulky] názvem své tabulky a [název sloupce] názvem svého sloupce.
Ve výše uvedeném dotazu používáme vnořené dotazy. Ve vnitřním dotazu vyhodnotí a přiřadí číslo řádku pro každý řádek a uloží jej do dočasné proměnné s názvem rownum. Vnější dotaz vybere řádky s hodnotou rownum mod n nulou.
Zde je dotaz SQL pro výběr každého 2. řádku v 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 |
+--------+--------+ Doufejme, že vám tento článek pomůže vybrat každý n-tý řádek v MySQL.
Ubiq usnadňuje vizualizaci dat a jejich sledování na řídicích panelech v reálném čase. Vyzkoušejte Ubiq zdarma.