- W nim zostanie użyta klauzula Over().
- Klauzula ORDERS BY porządkuje wynik zgodnie z kolejnością sortowania wymienionej kolumny.
Składnia:
>> WYBIERZ nazwa_kolumny,NUMER WIERSZA()NAD( PRZEGRODA PRZEZ nazwa_kolumny, ZAMÓW PRZEZ nazwa_kolumny) JAK numer_wiersza Z Nazwa tabeli;Otwórzmy powłokę klienta wiersza poleceń MySQL z poziomu aplikacji i wpiszmy hasło, aby się zalogować.
Musisz utworzyć nową tabelę lub użyć domyślnej tabeli, aby rozpocząć pracę nad funkcją numeru wiersza. Jak pokazano na poniższym obrazku, w danych schematu mamy zwierzęta tabeli z kilkoma rekordami. Pobierzmy jego rekordy za pomocą instrukcji SELECT.
>> WYBIERZ * Z dane .Zwierząt;
Przykład 01: ROW_NUMBER() przy użyciu klauzuli ORDER BY
Użyjemy tej samej tabeli, aby omówić kilka przykładów funkcji numeru wiersza. Bierzemy przykład funkcji ROW_NUMBER(), po której następuje Over(), używając tylko klauzuli ORDER BY. Pobieraliśmy wszystkie rekordy, numerując wiersze według kolumny Price order. Kolumnie, w której będą przechowywane numery wierszy, nadaliśmy nazwę numer_wiersza. Wypróbujmy poniższe polecenie, aby to zrobić.
>> WYBIERZ *,NUMER WIERSZA()NAD( ZAMÓW PRZEZ Cena) JAK numer_wiersza Z dane .Zwierząt;Po wykonaniu powyższego zapytania widzimy, że wiersze mają przypisane numery zgodnie z kolejnością sortowania kolumny Cena. Możesz pomyśleć, że niektóre mniejsze ceny powinny znajdować się na górze kolumny i powinny one być odpowiednio sortowane. Ale klauzula ORDER BY widzi tylko pierwszą cyfrę lub alfabet kolumny do sortowania wartości.
Wykonajmy to samo zapytanie, po którym następuje klauzula ORDER BY, korzystając z kolejności sortowania kolumny Wiek. Wynik zostanie podany zgodnie z kolumną Wiek.
>> WYBIERZ *,NUMER WIERSZA()NAD( ZAMÓW PRZEZ Wiek) JAK numer_wiersza Z dane .Zwierząt;
Przykład 02: ROW_NUMBER() przy użyciu klauzuli PARTITION BY
Do sprawdzenia wyników użyjemy jedynej klauzuli PARTITION BY w zapytaniu ROW_NUMBER(). Używaliśmy zapytania SELECT do pobierania rekordów, po których następowały klauzule ROW_NUMBER() i OVER, podczas partycjonowania tabeli według kolumny Kolor. Wykonaj dołączone poniżej polecenie w powłoce poleceń.
>> WYBIERZ *,NUMER WIERSZA()NAD( PRZEGRODA WG koloru) JAK numer_wiersza Z dane .Zwierząt;W efekcie widać, że numeracja wierszy została przypisana w przegrodach, zgodnie z porządkiem sortowania kolorów. Ponieważ mamy 4 wartości dla koloru Black, który zajmuje 4 rzędy. Dlatego ma numery czterorzędowe zaczynające się od 1 do 4 i odwrotnie.
Wypróbuj ten sam przykład, tym razem podzielony według kolumny Płeć. Jak wiemy, w tej tabeli mamy tylko dwie płcie, dlatego zostaną utworzone 2 partycje. Samice zajmują 9 rzędów, dlatego ma numerację rzędów od 1 do 9. Podczas gdy samce mają 8 wartości, dlatego ma od 1 do 8.
>> WYBIERZ *,NUMER WIERSZA()NAD( PRZEGRODA WEDŁUG PŁCI) JAK numer_wiersza Z dane .Zwierząt;
Przykład 03: ROW_NUMBER() Używając PARTITION BY & ORDER BY
Powyższe dwa przykłady wykonaliśmy w wierszu poleceń MySQL, teraz nadszedł czas, aby wykonać przykład ROW_NUMBER() w MySQL Workbench 8.0. Otwórz więc MySQL Workbench 8.0 z aplikacji. Połącz MySQL Workbench z lokalną bazą danych głównego hosta, aby rozpocząć pracę.
Po lewej stronie MySQL Workbench znajdziesz pasek schematu, wysadź nawigator. W tym pasku schematu znajdziesz listę baz danych. Pod listą baz danych będziesz mieć różne tabele i procedury składowane, jak widać na poniższym obrazku. W naszej bazie danych „dane” mamy różne tabele. Otworzymy tabelę „order1” za pomocą polecenia SELECT w obszarze zapytania, aby zacząć używać jej do implementacji funkcji ROW_NUMBER().
>> WYBIERZ * Z dane .zamówienie1;
Kolejność tabeli1 została wyświetlona w widoku siatki, jak pokazano poniżej. Możesz zobaczyć, że ma 4 pola kolumn, identyfikator, region, status i numer zamówienia. Będziemy pobierać wszystkie rekordy tej tabeli, używając jednocześnie klauzul ORDER BY i PARTITION BY.
W obszarze zapytań MySQL Workbench 8.0 wpisz zapytanie wyświetlone poniżej. Zapytanie zostało rozpoczęte klauzulą SELECT, pobierając wszystkie rekordy, po których następuje funkcja ROW_NUMBER() wraz z klauzulą OVER. Po klauzuli OVER określiliśmy kolumnę Status poprzedzoną instrukcją PARTITION BY, aby podzielić tabelę na partycje zgodnie z tą tabelą. Klauzula ORDER BY służy do uporządkowania tabeli w kolejności malejącej według kolumny Region. Numery wierszy będą przechowywane w kolumnie row_num. Stuknij ikonę lampy błyskowej, aby wykonać to polecenie.
Wyświetlony zostanie wynik wyświetlony poniżej. Przede wszystkim tabela została podzielona na dwie części zgodnie z wartościami kolumny Status. Następnie został przedstawiony w porządku malejącym kolumny „Region”, a przegrodom przypisano numery wierszy.
Wniosek:
Na koniec ukończyliśmy wszystkie niezbędne przykłady użycia funkcji ROW_NUMBER() w MySQL Workbench i MySQL Command-line Client Shell.