MySQL Satır Numarası Penceresi İşlevi

Mysql Row Number Window Function



MySQL içinde, bir ROW NUMBER() yöntemi, bölüm içindeki her satır için bir kronolojik sayı içerir. Bu sadece bir tür pencere özelliğidir. Satır sayısı, bölme içindeki satır sayısı ile 1'den başlar. 8.0 sürümünden önce MySQL'in ROW NUMBER() işlevine izin vermediğini, ancak bu özelliği taklit etmeye yardımcı olan bir oturum değişkeni sunduğunu unutmayın. Bu kılavuz boyunca MySQL ROW NUMBER() işlevi hakkında daha fazla şey anlayacağız ve sonuç koleksiyonundaki her satır için ardışık bir sayı üreteceğiz. MySQL'de, ROW_NUMBER() yöntemleri, aşağıdaki yan tümcelerle birlikte kullanılır:

  • İçinde Over() yan tümcesi kullanılacaktır.
  • ORDERS BY deyimi, sonucu belirtilen sütunun sıralama düzenine göre düzenler.

Sözdizimi:

>> SEÇME col_name,SATIR NUMARASI()ÜZERİNDE( BÖLÜM BY sütun_adı, TARAFINDAN SİPARİŞ col_name) OLARAK satır_sayısı İTİBAREN Tablo ismi;

Uygulamalardan MySQL komut satırı istemci kabuğunu açalım ve giriş yapmak için şifreyi yazalım.









Satır numarası işlevi üzerinde çalışmaya başlamak için yeni bir tablo oluşturmanız veya varsayılan tabloyu kullanmanız gerekir. Aşağıdaki resimde gösterildiği gibi, şema verilerinde içinde bazı kayıtlar bulunan bir masa hayvanımız var. SELECT komutunu kullanarak kayıtlarını getirelim.



>> SEÇME * İTİBAREN veri .hayvanlar;





Örnek 01: ROW_NUMBER() ORDER BY Cümlesini Kullanma

Satır numarası fonksiyonunun bazı örneklerini detaylandırmak için aynı tabloyu kullanacağız. Yalnızca ORDER BY yan tümcesini kullanırken, ROW_NUMBER() işlevinin ardından Over() işlevinin bir örneğini alıyoruz. Fiyat sırası sütununa göre satırları numaralandırırken tüm kayıtları getiriyoruz. Satır numaralarını saklayacak bir sütuna satır_sayısı adını verdik. Bunun için aşağıdaki komutu deneyelim.

>> SEÇME *,SATIR NUMARASI()ÜZERİNDE( TARAFINDAN SİPARİŞ Fiyat) OLARAK satır_sayısı İTİBAREN veri .hayvanlar;

Yukarıdaki sorguyu yürüttüğümüzde, Fiyat sütununun sıralama düzenine göre satırlara numara atandığını görebiliriz. Bazı küçük fiyatların sütunun üstünde olması gerektiğini ve buna göre sıralanması gerektiğini düşünebilirsiniz. Ancak ORDER BY yan tümcesi, değerleri sıralamak için yalnızca sütunun ilk basamağını veya alfabesini görür.



Age sütununun sıralama düzenini kullanırken aynı sorguyu ve ardından ORDER BY yan tümcesini çalıştıralım. Çıktı, Age sütununa göre verilecektir.

>> SEÇME *,SATIR NUMARASI()ÜZERİNDE( TARAFINDAN SİPARİŞ Yaş) OLARAK satır_sayısı İTİBAREN veri .hayvanlar;

Örnek 02: ROW_NUMBER() PARTITION BY Cümlesini Kullanma

Sonuçları kontrol etmek için ROW_NUMBER() sorgusundaki tek PARTITION BY yan tümcesini kullanacağız. Tabloyu Color sütununa göre bölümlere ayırırken, ROW_NUMBER() ve OVER yan tümcesi ile takip edilen kayıtları getirmek için SELECT sorgusunu kullanıyoruz. Komut kabuğunda aşağıdaki ekteki komutu yürütün.

>> SEÇME *,SATIR NUMARASI()ÜZERİNDE( BÖLÜM Renge GÖRE) OLARAK satır_sayısı İTİBAREN veri .hayvanlar;

Sonuç olarak, renk sıralama düzenine göre bölümlere satır numaralandırmasının atandığını görebilirsiniz. 4 sıra alan Siyah renk için 4 değerimiz olduğu için. Bu yüzden 1'den 4'e kadar dört sıralı sayılara sahiptir ve bunun tersi de geçerlidir.

Bu sefer Cinsiyet sütununa göre ayrılmış aynı örneği deneyin. Bildiğimiz gibi, bu tabloda sadece iki cinsiyetimiz var, bu yüzden 2 bölüm oluşacak. Dişiler 9 sıra kaplar, bu nedenle 1'den 9'a kadar sıra numaralandırması vardır. Erkeklerde 8 değer bulunurken, bu yüzden 1'den 8'e kadardır.

>> SEÇME *,SATIR NUMARASI()ÜZERİNDE( BÖLÜM cinsiyete göre) OLARAK satır_sayısı İTİBAREN veri .hayvanlar;

Örnek 03: ROW_NUMBER() PARTITION BY & ORDER BY Kullanımı

Yukarıdaki iki örneği MySQL komut satırında yaptık, şimdi sıra MySQL Workbench 8.0'da ROW_NUMBER() örneğini yapmaya geldi. Bu nedenle, uygulamalardan MySQL Workbench 8.0'ı açın. Çalışmaya başlamak için MySQL Workbench'i yerel ana bilgisayar kök veritabanına bağlayın.

MySQL Workbench'in sol tarafında, Şema çubuğunu bulacaksınız, gezgini patlatın. Bu Şema çubuğunda veritabanlarının listesini bulacaksınız. Veritabanları listesi altında, aşağıdaki resimde görebileceğiniz gibi farklı tablolar ve saklı prosedürlere sahip olacaksınız. Veritabanımızda 'data' içinde farklı tablolarımız var. ROW_NUMBER() işlev uygulaması için kullanmaya başlamak için sorgu alanındaki SELECT komutunu kullanarak 'order1' tablosunu açacağız.

>> SEÇME * İTİBAREN veri .sipariş1;

Tablo sırası1 aşağıda gösterildiği gibi ızgara görünümünde görüntülenmiştir. 4 sütun alanı, id, Region, Status ve OrderNo olduğunu görebilirsiniz. ORDER BY ve PARTITION BY deyimlerini aynı anda kullanırken bu tablonun tüm kayıtlarını alacağız.

MySQL Workbench 8.0'ın sorgu alanına, aşağıda görüntülenen sorguyu yazın. Sorgu, SELECT yan tümcesi ile başlatıldı, ardından tüm kayıtları ve ardından ROW_NUMBER() işlevi OVER yan tümcesini getirdi. OVER deyiminden sonra, PARTITION BY deyiminin devam ettiği Status sütununu bu tabloya göre tabloyu bölümlere ayırmak için belirttik. ORDER BY deyimi, tabloyu Region sütununa göre azalan şekilde düzenlemek için kullanılmıştır. Satır numaraları, satır_sayısı sütununda tutulacaktır. Bu komutu yürütmek için flaş simgesine dokunun.

Aşağıda görüntülenen sonuç gösterilecektir. Öncelikle tablo Status sütunundaki değerlere göre iki kısma ayrılmıştır. Daha sonra 'Bölge' sütununun azalan düzeninde sunulmuş ve bölümlere satır numaraları atanmıştır.

Çözüm:

Son olarak, MySQL Workbench ve MySQL Komut Satırı İstemci Kabuğu'nda ROW_NUMBER() işlevini kullanmak için gerekli tüm örnekleri tamamladık.