Понякога може да се наложи да получите всеки n-ти ред в MySQL или да върнете всеки n-ти ред във вашата таблица. В тази статия ще разгледаме как да изберете всеки n-ти ред в MySQL.
Как да получите всеки N-ти ред в MySQL
Ще разгледаме два начина за получаване на всеки N-ти ред в таблица – когато имате колона като идентификатор с последователни номера в нея и когато нямате такава.
Да кажем, че имате следната таблица продажби (идентификатор, сума) . За първия ни пример колоната 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 |
+----+--------+ Бонус четене:Как да добавите автоматично увеличение в съществуваща таблица
Ето SQL заявката за избор на всеки n-ти ред в MySQL.
mysql> select * from table_name where table_name.id mod n = 0;
В горната заявка ние основно избираме всеки ред, чийто id mod n стойността се оценява на нула. Така че получаваме редове с идентификатор n, 2n, 3n, ... Заменете име_на_таблица с името на вашата таблица и n с всеки n-ти ред, който искате да върнете.
Ето пример за връщане на всеки 2-ри ред от таблицата за продажби.
mysql> select * from sales where sales.id mod 2 = 0; +----+--------+ | id | amount | +----+--------+ | 2 | 300 | | 4 | 150 | +----+--------+
Бонус за четене:Как да намерите n-ти ред в MySQL
Ако вашата таблица няма колона, подобна на идентификатор със съхранени последователни номера, ето SQL заявката за получаване на всеки n-ти ред от таблицата.
Да приемем, че имате следната таблица продажби(дата_на_поръчка, сума) който няма колона, подобна на идентификатор.
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 |
+------------+--------+ Бонус за четене:Как да репликирате MySQL база данни на друг сървър
Ето SQL заявката за извличане на всеки n-ти ред в MySQL.
SELECT *
FROM (
SELECT
@row := @row +1 AS rownum, [column name]
FROM (
SELECT @row :=0) r, [table name]
) ranked
WHERE rownum % [n] = 0
В горната заявка заменете [n] с n-ти ред, който искате да получите, заменете [име на таблица] с името на вашата таблица и [име на колона] с името на вашата колона.
В горната заявка използваме вложени заявки. Във вътрешната заявка оценява и присвоява номера на ред за всеки ред и го съхранява във временна променлива, наречена rownum. Външната заявка избира редове със стойност rownum mod n като нула.
Ето SQL заявката за избор на всеки 2-ри ред в 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 |
+--------+--------+ Надяваме се, че тази статия ще ви помогне да изберете всеки n-ти ред в MySQL.
Ubiq улеснява визуализирането на данни и наблюдението им в табла за управление в реално време. Опитайте Ubiq безплатно.