Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да получите всеки N-ти ред в MySQL

Понякога може да се наложи да получите всеки 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 безплатно.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Таблица с формат за дата на MySQL

  2. Фалшиво ограничение на външния ключ е неуспешно

  3. Разбиране на изгледите в SQL

  4. Как да добавя низ към стойност на колона в MySQL?

  5. Запитване от две таблици в отчета