Funkcja okna numeru wiersza mysql

Funkcja okna numeru wiersza mysql
W MySQL metoda wiersza () zawiera numer chronologiczny dla każdego wiersza wewnątrz partycji. To tylko funkcja okna. Postać wierszy rozpoczyna się od 1 z postacią wierszy w partycji. Pamiętaj, zanim wersja 8.0, MySQL nie pozwala na funkcję wiersza (), jednak oferuje zmienną sesji, która pomaga naśladować tę funkcję. Zrozumiemy więcej o funkcjonalności MySQL Row Number () w całym przewodniku i wytworzymy kolejną liczbę dla każdego wiersza w kolekcji wyników. W MySQL metody Row_Number () są używane z albo kolejnymi klauzulami:
  • Klauzula Over () będzie używana w nim.
  • Zamówienia według klauzuli Ustaw wynik zgodnie z kolejnością sortowania wspomnianej kolumny.

Składnia:

>> Wybierz nazwę col_name, row_number () over (partycja według nazwy col_name, zamów według nazwy col_name) jako row_num from table_name;

Otwórzmy powłokę klienta linii poleceń MySQL z aplikacji i wpisz hasło, aby zalogować się.

Musisz utworzyć nową tabelę lub użyć domyślnej tabeli, aby rozpocząć pracę nad funkcją numeru wiersza. Jak przedstawiono na poniższym obrazku, mamy tabelę „Zwierzęta” w schemacie „Dane” z pewnymi rekordami. Pobierajmy rekordy za pomocą instrukcji Wybierz.

>> Wybierz * z danych.Zwierząt;

Przykład 01: Row_number () za pomocą klauzuli kolejności

Będziemy używać tej samej tabeli do opracowania niektórych przykładów funkcji numeru wiersza. Przyjmujemy przykład funkcji Row_Number (), a następnie Over (), a jedynie używamy klauzuli kolejności. Rysowaliśmy wszystkie rekordy podczas numerowania wierszy zgodnie z zamówieniem „ceny” kolumny. Podaliśmy nazwę „Row_num” do kolumny, która będzie przechowywać numery wiersza. Wypróbujmy poniższe polecenie, aby to zrobić.

>> Wybierz *, Row_number () Over (zamówienie według ceny) jako Row_num z danych.Zwierząt;

Po wykonaniu powyższego zapytania widzimy, że wiersze zostały przypisane liczbami zgodnie z kolejnością sortowania kolumny „Cena”. Możesz pomyśleć, że niektóre mniejsze ceny powinny znajdować się na szczycie kolumny i powinny to sortować według tego. Ale kolejność według klauzuli widzi tylko pierwszą cyfrę lub alfabet kolumny w celu sortowania wartości.

Wykonajmy to samo zapytanie, a następnie klauzulę kolejności, korzystając z kolejności sortowania kolumny „Wiek”. Wyjście zostanie podane zgodnie z kolumną „wiek”.

>> Wybierz *, Row_number () Over (Zakaz według wieku) jako row_num z danych.Zwierząt;

Przykład 02: row_number () za pomocą partycji według klauzuli

Będziemy używać jedynej partycji według klauzuli w zapytaniu Row_Number (), aby sprawdzić wyniki. Używamy zapytania Select do pobierania rekordów, a następnie klauzuli Row_number () i nadmiernej, jednocześnie dzieląc tabelę zgodnie z kolumną „Kolor”. Wykonaj dołączone poniższe polecenie w powładzie polecenia.

>> Wybierz *, row_number () over (partycja według koloru) jako row_num z danych.Zwierząt;

W rezultacie można zobaczyć, że numeracja wierszy została przypisana w partycjach, zgodnie z kolejnością sortowania kolorów. Ponieważ mamy 4 wartości dla kolorów „czarnych”, które przyjmują 4 wiersze. Dlatego ma czteroletnie liczby zaczynające się od 1 do 4 i odwrotnie.

Wypróbuj ten sam przykład, podzielony przez kolumnę „płeć” tym razem. Jak wiemy, mamy tylko dwie płcie w tym tabeli, dlatego zostaną utworzone 2 partycje. Kobiety zajmują 9 rzędów, dlatego ma liczbę rządów od 1 do 9. Podczas gdy mężczyźni mają 8 wartości, dlatego ma od 1 do 8.

>> Wybierz *, row_number () over (partycja według płci) jako row_num z danych.Zwierząt;

Przykład 03: row_number () za pomocą partycji przez i zamówienie według

Zrobiliśmy powyższe dwa przykłady w wierszu poleceń MySQL, teraz nadszedł czas, aby zrobić przykład Row_Number () w MySQL Workbench 8.0. Otwórz więc MySQL Workbench 8.0 Z aplikacji. Podłącz MySQL Workbench z lokalną bazą danych hosta, aby rozpocząć działanie.

Po lewej stronie MySQL Workbench znajdziesz pasek schematu, wydmuchać nawigatorem. Na tym pasku schematu znajdziesz listę baz danych. Na liście baz danych będziesz mieć różne tabele i procedury przechowywane, jak widać na poniższym obrazku. Mamy różne tabele w naszej bazie danych „Dane”. Otwieramy tabelę „Order1” za pomocą polecenia Select w obszarze zapytania, aby zacząć używać go dla implementacji funkcji row_number ().

>> Wybierz * z danych.Zakon1;

Tabela „Order1” została wyświetlona w widoku siatki, jak pokazano poniżej. Możesz zobaczyć, jak ma 4 pól kolumn, id, region, status i porządek. Będziemy pobierać wszystkie rekordy tej tabeli podczas korzystania z klauzuli zamówienia i partycji, oba jednocześnie.

W strefie zapytań MySQL Workbench 8.0, wpisz zapytanie poniżej. Zapytanie zostało rozpoczęte od klauzuli Select, pobierając wszystkie rekordy, a następnie funkcję Row_Number () wraz z klauzulą ​​Over. Po klauzuli nadmiernej określeliśmy „status” kolumny, kontynuowany przez oświadczenie „Partycja przez”, aby podzielić tabelę na partycje zgodnie z tą tabelą. Zamówienie według klauzuli jest używane do ułożenia tabeli w sposób malejący zgodnie z kolumną „region”. Liczby wierszy będą przechowywane w kolumnie „Row_num”. Stuknij ikonę Flash, aby wykonać to polecenie.

Wynik zostanie pokazany poniżej. Przede wszystkim tabela została podzielona na dwie części zgodnie z wartościami kolumny „status”. Następnie został przedstawiony w kolejności malejącej kolumny „region”, a partycje zostały przypisane do numerów wierszy.

Wniosek:

Wreszcie, ukończyliśmy wszystkie niezbędne przykłady korzystania z funkcji Row_Number () w MySQL Workbench i MySQL Line Line Shell.