MySQL MariaDB

Функция окна номера строки MySQL

Функция окна номера строки MySQL
В MySQL метод ROW NUMBER () содержит хронологический номер для каждой строки внутри раздела. Это просто какая-то оконная фишка. Число строк начинается с 1 с числа строк внутри раздела. Помните, до версии 8.0, MySQL не поддерживает функцию ROW NUMBER (), однако он предлагает переменную сеанса, которая помогает имитировать эту функцию. Мы узнаем больше о функциональности MySQL ROW NUMBER () в этом руководстве и создадим последовательный номер для каждой строки в коллекции результатов. В MySQL методы ROW_NUMBER () используются либо с последующими предложениями:

Синтаксис:

>> ВЫБЕРИТЕ имя_столбца, ЧИСЛО СТРОКИ () НАД (РАЗДЕЛЕНИЕ ПО имени_столбца, ЗАКАЗАТЬ ПО имени столбца) КАК номер_строки ИЗ имя_таблицы;

Давайте откроем клиентскую оболочку командной строки MySQL из приложений и введем пароль для входа в систему.

Вам необходимо создать новую таблицу или использовать таблицу по умолчанию, чтобы начать работу над функцией номера строки. Как показано на изображении ниже, у нас есть таблица «животные» в схеме «данные» с некоторыми записями в ней. Получим его записи с помощью инструкции SELECT.

>> ВЫБРАТЬ * ИЗ данных.животные;

Пример 01: ROW_NUMBER () с использованием предложения ORDER BY

Мы будем использовать ту же таблицу, чтобы подробно рассказать о некоторых примерах функции номера строки. Мы берем пример функции ROW_NUMBER (), за которой следует Over (), при этом используем только предложение ORDER BY. Мы извлекали все записи, нумеруя строки в соответствии с порядком столбца «Цена». Мы дали имя «row_num» столбцу, в котором будут храниться номера строк. Давайте попробуем следующую команду сделать это.

>> SELECT *, ROW_NUMBER () OVER (ORDER BY Price) AS row_num FROM data.животные;

Выполнив вышеуказанный запрос, мы видим, что строкам были присвоены номера в соответствии с порядком сортировки столбца «Цена». Вы можете подумать, что некоторые меньшие цены должны быть вверху столбца, и он должен сортироваться в соответствии с этим. Но предложение ORDER BY видит только первую цифру или алфавит столбца для сортировки значений.

Давайте выполним тот же запрос, за которым следует предложение ORDER BY, используя порядок сортировки столбца «Возраст». Результат будет соответствовать столбцу «Возраст».

>> SELECT *, ROW_NUMBER () OVER (ORDER BY Age) AS row_num FROM data.животные;

Пример 02: ROW_NUMBER () с использованием предложения PARTITION BY

Мы будем использовать единственное предложение PARTITION BY в запросе ROW_NUMBER () для проверки результатов. Мы использовали запрос SELECT для извлечения записей, за которыми следовали ROW_NUMBER () и предложение OVER, при этом таблица разбивалась на разделы в соответствии со столбцом «Цвет». Выполните добавленную ниже команду в командной оболочке.

>> SELECT *, ROW_NUMBER () OVER (РАЗДЕЛЕНИЕ ПО цвету) AS row_num FROM data.животные;

В результате вы можете увидеть, что нумерация строк была назначена в разделах в соответствии с порядком сортировки цветов. Поскольку у нас есть 4 значения для цвета «Черный», который занимает 4 строки. Вот почему у него четырехрядные числа от 1 до 4 и наоборот.

Попробуйте тот же пример, на этот раз разделенный столбцом «Пол». Как мы знаем, в этой таблице всего два пола, поэтому будет сформировано 2 раздела. Самки занимают 9 рядов, поэтому нумерация рядов от 1 до 9. У мужчин 8 значений, поэтому от 1 до 8.

>> SELECT *, ROW_NUMBER () OVER (РАЗДЕЛЕНИЕ ПО ПОЛУ) AS row_num FROM data.животные;

Пример 03: ROW_NUMBER () с использованием PARTITION BY и ORDER BY

Мы выполнили два приведенных выше примера в командной строке MySQL, теперь пора выполнить пример ROW_NUMBER () в MySQL Workbench 8.0. Итак, откройте MySQL Workbench 8.0 из приложений. Подключите MySQL Workbench к корневой базе данных локального хоста, чтобы начать работу.

В левой части MySQL Workbench вы найдете панель схемы, взорвите навигатор. На этой панели схемы вы найдете список баз данных. В списке баз данных у вас будут разные таблицы и хранимые процедуры, как вы можете видеть на изображении ниже. У нас есть разные таблицы в нашей базе данных 'data'. Мы откроем таблицу order1 с помощью команды SELECT в области запроса, чтобы начать использовать ее для реализации функции ROW_NUMBER ().

>> ВЫБРАТЬ * ИЗ данных.order1;

Таблица «order1» была отображена в виде сетки, как показано ниже. Вы можете видеть, что у него есть 4 поля столбца: id, Region, Status и OrderNo. Мы будем извлекать все записи из этой таблицы, используя предложения ORDER BY и PARTITION BY одновременно.

В области запросов MySQL Workbench 8.0, введите показанный ниже запрос. Запрос был запущен с предложением SELECT, получая все записи, за которыми следует функция ROW_NUMBER () вместе с предложением OVER. После предложения OVER мы указали столбец «Статус», за которым следует оператор «PARTITION BY», чтобы разделить таблицу на разделы в соответствии с этой таблицей. Предложение ORDER BY используется для упорядочивания таблицы по убыванию в соответствии со столбцом «Регион». Номера строк будут сохранены в столбце row_num. Нажмите на значок вспышки, чтобы выполнить эту команду.

Будет показан результат, показанный ниже. Прежде всего, таблица разделена на две части по значениям столбца «Статус». После этого он был представлен в порядке убывания столбца «Регион», и разделам были присвоены номера строк.

Заключение:

Наконец, мы выполнили все необходимые примеры использования функции ROW_NUMBER () в MySQL Workbench и клиентской оболочке командной строки MySQL.

5 лучших аркад для Linux
В настоящее время компьютеры - это серьезные машины, используемые для игр. Если вы не можете получить новый рекорд, вы поймете, о чем я. В этом посте ...
Битва за Веснот 1.13.6 Выпущена разработка
Битва за Веснот 1.13.6, выпущенная в прошлом месяце, является шестой разработкой в ​​1.13.x и содержит ряд улучшений, в первую очередь пользовательско...
Как установить League Of Legends на Ubuntu 14.04
Если вы поклонник League of Legends, то это возможность для вас протестировать League of Legends. Обратите внимание, что LOL поддерживается в PlayOnLi...