2012-09-15 37 views
11

'da bir sorguyu çalıştırmadan önce kaç satırın etkileneceğini bilmek nasıl ROWCOUNT hakkında biraz okudum ama tam olarak ne aradığım değil. Anlayışımdaki satır sayısı, sorguyu çalıştırdıktan sonra etkilenen satırların sayısını belirtir. Ne arıyorsun sorguyu çalıştırmadan ÖNCE bilmek. Mümkün mü?microsoft sql server 2008

+0

Hayır iki sorgu yapmadan mümkün değildir adayın. Bunu neden yapmak zorundasın? İsteğin nedenine bağlı olarak, sorguyu '@@ ROWCOUNT' kontrol edebilir ve beklendiği gibi gerçekleştirebilirsiniz. Veya sorgu ile satır sayısını döndürmek için 'COUNT (*) OVER()' kullanın. –

cevap

10

Kısa cevap edilir etkilenecek kaç satır söyleyecektir hiçbir ..

Sen SQL server query..atleast çalıştırmadan önce satır sayısını elde edemezsiniz. o kazandı böylece

bunu yapmanın en iyi yolu' yazıp

[delete]or [update] [set col='val'] 
from <table> where <condtion> 
+0

SQL Server Analytical işlevlerini kullanarak, etkilenen toplam satır sayısını elde edebilirsiniz. Ama bu sadece çalışma zamanı. Hiçbir şeyin değişmesi gerekmeyen satırları atlayacağı için – rvphx

+0

her zaman doğru olmayacaktır. örneğin: yeni değer ve eski değer zaten aynı. –

+0

@HimanshuSaini: Bildiğim kadarıyla, SQL server güncellemeden önce eski ve yeni değerlerin aynı olup olmadığını kontrol etmeyecek. Sadece tüm kayıtları eşleşen koşullarla günceller. Bununla ilgili herhangi bir belge varsa lütfen paylaşın. Bu benim için yeni bir öğrenme olurdu –

1

En basit çözüm, SELECT * FROM... içerisindeki sütunları SELECT Count(*) FROM ... ile değiştirmektir ve çalıştırılmadan önce sorgunuzun geri kalanı (WHERE maddesinin aynı olması gerekir). Bu

3

tahmin yürütme planı size satırları verecek istatistiklerine dayalı etkilenen gerçek sorguyu yürütmek

Select count(*) from <table> where <condtion> 

kullanmaktır Bu durumda gerçekten sana yardım ederim.

Ne kopyalama senin UPDATE statement veya DELETE statement ve SELECT haline çeviriyor öneriyoruz. Kaç tane satırın geri geldiğini görmek için bunu çalıştırın ve kaç satırın güncelleneceğini veya silindiğini yanıtladığınıza karar verin.

Örn:

UPDATE t 
SET t.Value = 'Something' 
FROM MyTable t 
WHERE t.OtherValue = 'Something Else' 

olur: işlem yürütülmeden önce

SELECT COUNT(*) 
FROM MyTable t 
WHERE t.OtherValue = 'Something Else' 
5

Ayrıca BEGIN TRANSACTION kullanabilirsiniz. Etkilenen satır sayısını görebilirsiniz. Oradan, sonuçları COMMIT veya verileri orijinal haline geri koymak için ROLLBACK kullanın.

İşlem başlayın

Güncelleme Tablo seti col = 'şey' col2 = 'başka bir şey';

/Geri Alma