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

Давайте откроем клиентскую оболочку командной строки MySQL База данных

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

  • В нем будет использоваться предложение Over ().
  • Предложение ORDERS BY упорядочивает результат в соответствии с порядком сортировки указанного столбца.

Синтаксис

>> SELECT col_name, ROW_NUMBER() OVER (PARTITION BY col_name, ORDER BY col_name) AS row_num FROM table_name;

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

Давайте откроем клиентскую оболочку командной строки MySQL

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

>> SELECT * FROM data.animals;

Вы должны создать новую таблицу или использовать таблицу по умолчанию

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

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

>> SELECT *, ROW_NUMBER() OVER ( ORDER BY Price ) AS row_num FROM data.animals;

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

Читайте также:  Как установить автоинкрементный первичный ключ PostgreSQL?

столбца для сортировки значений

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

>> SELECT *, ROW_NUMBER() OVER ( ORDER BY Age ) AS row_num FROM data.animals;

Давайте выполним тот же запрос, за которым следует предложение

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

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

>> SELECT *, ROW_NUMBER() OVER ( PARTITION BY Color ) AS row_num FROM data.animals;

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

В результате вы можете увидеть, что нумерация строк была

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

>> SELECT *, ROW_NUMBER() OVER ( PARTITION BY Gender ) AS row_num FROM data.animals;

Попробуйте тот же пример, на этот раз разделенный столбцом

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

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

Индексы с использованием MySQL WorkBench

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

>> SELECT * FROM data.order1;

В левой части MySQL Workbench вы найдете панель схемы

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

Читайте также:  Индексы в MySQL: как найти индекс таблицы?

была отображена в виде сетки, как показано ниже

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

В области запроса MySQL Workbench 8.0 введите показанный ниже запрос

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

Будет показан результат, показанный ниже

Заключение

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

Оцените статью
bestprogrammer.ru
Добавить комментарий