2011-10-05 16 views
11

Kullanıcı tarafından belirttiği gibi filtreleme kriterlerine göre sonuçları etkileşimli olarak filtrelemek için bir web sayfası yazıyorum. Sadece SQL'den en iyi 20 satırdan dönmek istiyorum ancak kaç tane sıranın ölçütleri karşıladığını bilmek istiyorum (Count). Kullanıcıya şunu söylemek istiyorum: "Burada kriterlerinize uyan en iyi 20 satır ve BTW, burada göstermediğim 2.000 ek satır vardı".TOP x'i nasıl seçersiniz, ancak yine de tüm sorgunun bir COUNT değerini alırsınız?

Sorgunun yalnızca iki kez çalıştırılabileceğini biliyorum, ancak bu pahalı ve gereksizdir. Veritabanını vergilendirmeden istediğimi nasıl yapabilirim?

cevap

22

Bununla birlikte özellikle eşleşen satır sayısı belirlenmesinde kullanılabilir ancak tüm SELECT listesini örtmeyen dar dizinleri varsa daha verimli çalışmak olabilir iki sorgu yapmak COUNT(*) OVER()

SELECT TOP 20 *, 
     COUNT(*) OVER() AS TotalMatchingRows 
FROM master..spt_values 
WHERE type='P' 
ORDER BY number 

kullanabilirsiniz.

+1

Ben bir aptalım, sen bir zen ustasın. :-) Ben SQL uzmanları, hiçbir fırfırlar, sadece gerçekleri seviyorum. Teşekkürler Martin. – kingdango

+0

İki sorgunun nasıl yapıldığını açıklayabilir misiniz? –

İlgili konular