Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 14301|Yanıt: 1

[Kaynak] Oracle'da rownum ile row_number() arasındaki fark

[Bağlantıyı kopyala]
Yayınlandı 25.09.2017 16:00:21 | | |
row_number()over(col1 ile bölünür, col2 sırası) grup içindeki col2'ye göre sıralanır ve bu fonksiyon tarafından hesaplanan değer, her grup dahili olarak sıralandıktan sonra sıralanan sıra numarasını (grup içindeki ardışık tekiz) temsil eder. Rownum'dan farkı, sıralama için rownum kullanıldığında, sonuç kümesine kötü bir rownum ekliyorsunuz ve sonra sıralar; row_number() önce sıralar, ardından sıralama maddesi eklendikten sonra satır numarasını hesaplar.

1. Kahinde Rownum

Sorgudan dönen satırlar numaralandırılmak için kullanılır; ilk döndürülen satıra 1, ikinci satıra 2 ve benzeri şekilde atanır; bu sahte alan, sorgu tarafından döndürülen toplam satır sayısını sınırlamak için kullanılabilir ve sıraya herhangi bir tablonun adı eklenemez.

1. Belirli bir değere eşit sorgu koşulları için rownum

Öğrenci tablosunda ilk öğrenciyi bulmak istiyorsanız, rownum=1'i koşul olarak kullanabilirsiniz. Ancak, öğrenci tablosunda ikinci öğrencinin bilgilerini bulmak istiyorsanız, rownum=2 kullanarak veriyi bulamazsınız. Çünkü rownum 1'den başlar, ancak 1'in üzerindeki doğal sayılar sıranın evet olarak değerlendirildiğinde yanlış sayılır, bu yüzden rownum = n(n>1 doğal sayı) bulmak imkansızdır.




2. Belirli bir değerden büyük sorgu koşulları için Rownum

İkinci satırdan itibaren kayıtları bulmak istiyorsanız, rownum>2 kullandığınızda kayıtları bulamazsanız, sorunu çözmek için aşağıdaki alt sorgu yöntemlerini kullanabilirsiniz. Alt sorgudaki sıranın bir takma adı olması gerekir, aksi takdirde kayıt bulunmaz, çünkü sıralık bir tablonun sütunu değildir ve eğer alias yoksa, sıranın alt sorgu sütunu mu yoksa ana sorgu sütunu mu olduğunu bilmek imkansızdır.




3. Belirli bir değerden küçük sorgu koşulları için rownum

Üçüncü kaydın önceki kaydını bulmak istiyorsanız, rownum<3 kullanırken iki kayıt elde edebilirsiniz. Elbette, rownum rownum < n (n>1'in doğal sayısı) koşulunun doğru olduğunu düşünüyor, yani kaydı bulabilirsiniz.




4. Rownum ve Sıralama

Oracle'daki rownum, veri alınırken oluşturulan dizi numarasıdır, bu yüzden belirtilen sıralanmış veri için rowmun satır verisini belirtmek istiyorsanız, buna dikkat etmelisiniz.




ROWNUM ID ADI
---------- ------ ---------------------------------------------------
3 200003 Li San
2 200002 Wang Er
1 200001 Zhang Yi
4 200004 Zhao Si

Görülebiliyor kiSıra, isim sütunu tarafından oluşturulan bir dizi numarası değildir。 Sistem, kayıt satırının sayısını, kaydın girildiği sırayla atar ve rowid de sırayla atanır. Bu sorunu çözmek için alt sorgular kullanılmalıdır




ROWNUM ID ADI
---------- ------ ---------------------------------------------------
1 200003 Li San
2 200002 Wang Er
3 200001 Zhang Yi
4 200004 Zhao Si

2. Oracle row_number ()

1、row_number() over (col_1[,col_2 ...])
col_1[,col_2 ...] Sıralama, sıralanmış sonuç kümesini döndürür ve her satır için farklı bir değer döndürür.

2、row_number() üzerinde (col_n[,col_m ...] siparişi col_1[,col_2 ...])
İlk olarak, col_n[,col_m ... gruplama, ardından her gruplama col_1[,col_2 ...] Sıralama (yükselen) ve sonunda sıralanmış sonuç kümesini döndür

Oracle row_number() örneği

1. Numaralandırmak için row_number() fonksiyonunu kullanın, örneğin



Prensip: Önce PSD'ye göre sıralayın, sıralamadan sonra her veri parçasını numaralayın.

2. Siparişi fiyat sıralamasına göre artan sırayla sıralayın ve her kaydı aşağıdaki kodla sıralayın:



3. Her müşterinin son zamanlarda verdiği sipariş sayısını sayın.




4. Over gibi pencere açma fonksiyonları kullanılırken, gruplama ve sıralama işlemi "where, group by, order by" uygulamasından daha geç olur.



Yukarıdaki kod önce where cümlesini çalıştırır, ardından her kaydı çalıştırır.

3. row_number () ile rownum arasındaki fark

Rownum ile sıralarken, sonuç kümesine kötü bir rownum ekler ve sonra onu sıralarsınız, row_number() ise önce sıralar ve sıralama cümlesini ekledikten sonra satır numarasını hesaplar.




Önceki:Xunlei Wanke Cloud bu sefer Taobao'yu kullanıcılara maymun gibi mi kitlesel fonlaması yapıyor?
Önümüzdeki:Oracle, bir tablodaki tüm sütunları ve veri türlerini sorgular
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com