MySQL'deki ROW_NUMBER() işlevi, aşağıdakileri döndürmek için kullanılır: sıralı sayı kendi bölümündeki her satır için. Bir nevi pencere fonksiyonudur. Satır numarası 1'den bölümdeki mevcut satır sayısına kadar başlar.
MySQL'in 8.0 sürümünden önce ROW_NUMBER() işlevini desteklemediğine dikkat edilmelidir. oturum değişkeni bu, bu işlevi taklit etmemizi sağlar.
Sözdizimi
Aşağıda ROW_NUMBER() işlevinin kullanılacağı temel sözdizimi verilmiştir. MySQL :
Java kuralları adlandırma
ROW_NUMBER() OVER ( )
Bir örnek kullanarak bunu gösterelim .
Öncelikle 'adlı bir tablo oluşturacağız' Kişi ' aşağıdaki ifadeyi kullanarak:
Java'yı dilimleme
CREATE TABLE Person ( Name varchar(45) NOT NULL, Product varchar(45) DEFAULT NULL, Country varchar(25) DEFAULT NULL, Year int NOT NULL );
Daha sonra bu tabloya değerlerin eklenmesi gerekmektedir. Aşağıdaki ifadeyi yürütün:
INSERT INTO Person(Name, Product, Country, Year) VALUES ('Stephen', 'Computer', 'USA', 2015), ('Joseph', 'Laptop', 'India', 2016), ('John', 'TV', 'USA', 2016), ('Donald', 'Laptop', 'England', 2015), ('Joseph', 'Mobile', 'India', 2015), ('Peter', 'Mouse', 'England', 2016);
Daha sonra kayıtları görüntülemek için SELECT deyimini yürütün:
mysql> SELECT * FROM Person;
Aşağıda gösterildiği gibi çıktıyı alacağız:
Artık aşağıdaki ifadeyi kullanarak her kayda bir sıra numarası atamak için ROW_NUMBER() fonksiyonunu kullanabiliriz:
SELECT *, ROW_NUMBER() OVER(PARTITION BY Year) AS row_num FROM Person;
Aşağıdaki çıktıyı verecektir:
Yine, aşağıdaki ifadeyi kullanarak bir bölüm içindeki her kayda bir sıra numarası atamak için ROW_NUMBER() işlevini kullanabiliriz:
tcp vs udp
SELECT *, ROW_NUMBER() OVER(PARTITION BY Year) AS row_num FROM Person;
Yıla (2015 ve 2016) göre iki bölümün bulunduğu aşağıdaki gibi çıktıyı verecektir.
Java'daki diziler
MySQL ROW_NUMBER() Oturum Değişkenini Kullanma
Oturum değişkenini kullanarak artan sırada bir satır numarası eklemek için ROW_NUMBER() işlevini taklit edebiliriz.
Her satıra 1'den başlayan satır numarasını ekleyen aşağıdaki ifadeyi yürütün:
SET @row_number = 0; SELECT Name, Product, Year, Country, (@row_number:=@row_number + 1) AS row_num FROM Person ORDER BY Country;
Bu açıklamada öncelikle oturum değişkenini belirledik. @satır numarası @prfix ile gösterdik ve değerini 0 olarak belirledik. Daha sonra Person tablosundan veri seçtik ve @row_number değişkeninin değerini her satıra bir artırdık.
Sorguların başarılı bir şekilde yürütülmesinden sonra aşağıdaki gibi çıktı elde edeceğiz:
Yine bir oturum değişkenini tablo olarak kullanacağız ve aşağıdaki ifadeyi kullanarak onu kaynak tabloyla çapraz birleştireceğiz:
SELECT (@row_number:=@row_number + 1) AS row_num, Name, Country, Year FROM Person, (SELECT @row_number:=0) AS temp ORDER BY Year;
Çıktıyı aşağıdaki gibi alacağız: