MySQL MariaDB

Функция на прозореца за номер на ред на MySQL

Функция на прозореца за номер на ред на MySQL
В MySQL метод ROW NUMBER () съдържа хронологичен номер за всеки ред в дяла. Това е просто някаква функция на прозореца. Фигурата на редовете започва от 1 с фигурата на редовете в дяла. Не забравяйте, преди версия 8.0, MySQL не разрешава функцията ROW NUMBER (), но предлага сесийна променлива, която помага на човек да имитира тази функция. Ще разберем повече за функционалността MySQL ROW NUMBER () в това ръководство и ще създадем пореден номер за всеки ред в колекцията от резултати. В MySQL методите ROW_NUMBER () се използват или с следващите клаузи:

Синтаксис:

>> ИЗБЕРЕТЕ col_name, ROW_NUMBER () НАД (ДЯЛ ПО col_name, ПОРЪЧКА ПО col_name) КАТО номер_ред от ИМЕ на таблица;

Нека отворим клиентската обвивка на командния ред на MySQL от приложенията и въведем паролата за влизане.

Трябва да създадете нова таблица или да използвате таблицата по подразбиране, за да започнете да работите по функцията номер на ред. Както е представено на изображението по-долу, имаме таблица „животни“ в схемата „данни“ с някои записи в нея. Нека извлечем неговите записи, като използваме инструкцията SELECT.

>> ИЗБЕРЕТЕ * ОТ данни.животни;

Пример 01: ROW_NUMBER () Използване на клауза ORDER BY

Ще използваме същата таблица, за да разгледаме някои примери за функцията за номер на редове. Вземаме пример за функцията ROW_NUMBER (), последвана от Over (), като същевременно използваме само клаузата ORDER BY. Извличахме всички записи, докато номерирахме редовете според реда на колоната „Цена“. Дадохме името „row_num“ на колона, която ще съхранява номерата на реда. Нека опитаме командата по-долу, за да го направим.

>> ИЗБЕРЕТЕ *, РЯД_NUMBER () НАД (ПОРЪЧКА ПО ЦЕНА) КАТО row_num ОТ данни.животни;

При изпълнението на горната заявка можем да видим, че на редовете са присвоени номера според реда за сортиране на колоната „Цена“. Може би си мислите, че някои по-малки цени трябва да са в горната част на колоната и тя трябва да се сортира според това. Но клаузата ORDER BY вижда само първата цифра или азбука на колоната за сортиране на стойности.

Нека изпълним същата заявка, последвана от клаузата ORDER BY, докато използваме реда за сортиране на колоната „Възраст“. Резултатът ще бъде даден съгласно колона „Възраст“.

>> ИЗБЕРЕТЕ *, РЯД_NUMBER () НАД (ПОРЪЧКА ПО ВЪЗРАСТ) КАТО номер_ред от данни.животни;

Пример 02: ROW_NUMBER () Използване на клауза PARTITION BY

Ще използваме единствената клауза PARTITION BY в заявката ROW_NUMBER (), за да проверим резултатите. Използвахме заявката SELECT, за да извлечем записите, последвани от ROW_NUMBER () и клаузата OVER, докато разделяме таблицата според колоната „Цвят“. Изпълнете приложената по-долу команда в командната обвивка.

>> SELECT *, ROW_NUMBER () НАД (ДЯЛ ПО ЦВЕТ) КАТО номер_ред от данни.животни;

В резултата можете да видите, че номерирането на редове е присвоено в дялове, според реда за сортиране на цветовете. Тъй като имаме 4 стойности за цвят „Черен“, който отнема 4 реда. Ето защо има четири реда номера, започващи от 1 до 4 и обратно.

Опитайте същия пример, този път разделен от колоната „Пол“. Както знаем, в тази таблица имаме само два пола, затова ще бъдат оформени 2 дяла. Женските заемат 9 реда, затова има номерация на редове от 1 до 9. Докато мъжете имат 8 стойности, затова има от 1 до 8.

>> ИЗБЕРЕТЕ *, ROW_NUMBER () НАД (РАЗДЕЛЕНИЕ ПО ПОЛ) КАТО row_num ОТ данни.животни;

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

Направихме горните два примера в командния ред на MySQL, сега е време да направим примера ROW_NUMBER () в MySQL Workbench 8.0. И така, отворете MySQL Workbench 8.0 от приложенията. Свържете MySQL Workbench с локалната база данни на хоста, за да започнете да работите.

От лявата страна на MySQL Workbench ще намерите лентата на схемата, взривете навигатора. В тази лента на схемата ще намерите списъка с бази данни. Под списъка с бази данни ще имате различни таблици и съхранени процедури, както можете да видите на изображението по-долу. Имаме различни таблици в нашата база данни „данни“. Ще отворим таблицата 'order1' с помощта на командата SELECT в областта на заявката, за да започнем да я използваме за изпълнение на функцията ROW_NUMBER ().

>> ИЗБЕРЕТЕ * ОТ данни.поръчка1;

Таблицата „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 от командния ред.

Полезни инструменти за геймърите на Linux
Ако искате да играете игри на Linux, има вероятност да сте използвали приложения и помощни програми като Wine, Lutris и OBS Studio, за да подобрите иг...
HD Remastered Games за Linux, които никога преди не са имали издание на Linux
Много разработчици и издатели на игри излизат с HD ремастер на стари игри, за да удължат живота на франчайза, моля феновете, които искат съвместимост ...
Как да използвам AutoKey за автоматизиране на Linux игри
AutoKey е програма за автоматизация на настолни компютри за Linux и X11, програмирана в Python 3, GTK и Qt. Използвайки неговата функционалност за скр...