logo

Функція MySQL ROW_NUMBER().

Функція ROW_NUMBER() у MySQL використовується для повернення порядковий номер для кожного рядка в його розділі. Це різновид віконної функції. Номер рядка починається від 1 до кількості рядків, наявних у розділі.

Слід зазначити, що MySQL не підтримує функцію ROW_NUMBER() до версії 8.0, але вони надають змінна сесії що дозволяє емулювати цю функцію.

Синтаксис

Нижче наведено базовий синтаксис для використання ROW_NUMBER(). MySQL :

javafx на eclipse
 ROW_NUMBER() OVER ( ) 

Продемонструємо це на прикладі .

Спочатку ми створимо таблицю під назвою ' особа ' використовуючи наведений нижче оператор:

fmovies
 CREATE TABLE Person ( Name varchar(45) NOT NULL, Product varchar(45) DEFAULT NULL, Country varchar(25) DEFAULT NULL, Year int NOT NULL ); 

Далі необхідно додати значення в цю таблицю. Виконайте наведений нижче оператор:

 INSERT INTO Person(Name, Product, Country, Year) VALUES ('Stephen', 'Computer', 'USA', 2015), ('Joseph', 'Laptop', 'India', 2016), ('John', 'TV', 'USA', 2016), ('Donald', 'Laptop', 'England', 2015), ('Joseph', 'Mobile', 'India', 2015), ('Peter', 'Mouse', 'England', 2016); 

Далі виконайте інструкцію SELECT, щоб відобразити записи:

 mysql> SELECT * FROM Person; 

Ми отримаємо результат, як показано нижче:

Функція MySQL ROW_NUMBER().

Тепер ми можемо використовувати функцію ROW_NUMBER(), щоб призначити порядковий номер для кожного запису за допомогою наведеного нижче оператора:

 SELECT *, ROW_NUMBER() OVER(PARTITION BY Year) AS row_num FROM Person; 

Це дасть наступний результат:

що таке об'єкт java
Функція MySQL ROW_NUMBER().

Знову ж таки, ми можемо використовувати функцію ROW_NUMBER(), щоб призначити порядковий номер для кожного запису в розділі за допомогою наведеного нижче оператора:

 SELECT *, ROW_NUMBER() OVER(PARTITION BY Year) AS row_num FROM Person; 

Це дасть результат, як показано нижче, де знайдено два розділи на основі року (2015 та 2016).

машинописний цикл foreach
Функція MySQL ROW_NUMBER().

MySQL ROW_NUMBER() Використання змінної сеансу

Ми можемо емулювати функцію ROW_NUMBER(), щоб додати номер рядка в порядку зростання за допомогою змінної сеансу.

Виконайте наведений нижче оператор, який додає номер рядка для кожного рядка, який починається з 1:

 SET @row_number = 0; SELECT Name, Product, Year, Country, (@row_number:=@row_number + 1) AS row_num FROM Person ORDER BY Country; 

У цій заяві ми спочатку вказали змінну сеансу @ряд_номер позначається @prfix і встановлюється його значення 0. Потім ми вибираємо дані з таблиці Person і збільшуємо значення для змінної @row_number на одиницю для кожного рядка.

Після успішного виконання запитів ми отримаємо наступний результат:

Функція MySQL ROW_NUMBER().

Знову ж таки, ми збираємося використовувати змінну сеансу як таблицю та перехресно з’єднати її з вихідною таблицею за допомогою наступного оператора:

 SELECT (@row_number:=@row_number + 1) AS row_num, Name, Country, Year FROM Person, (SELECT @row_number:=0) AS temp ORDER BY Year; 

Ми отримаємо результат, як показано нижче:

Функція MySQL ROW_NUMBER().