में क्वेरी चलाने से पहले कितनी पंक्तियां प्रभावित होंगी, मैंने ROWCOUNT के बारे में कुछ पढ़ा है, लेकिन यह बिल्कुल ठीक नहीं है कि मैं क्या देख रहा हूं। मेरी समझ से पंक्ति गणना आपके द्वारा क्वेरी चलाने के बाद प्रभावित पंक्तियों की संख्या बताती है। आप जो खोज रहे हैं उसे जानने के पहले आप जानना चाहते हैं। क्या यह संभव है?माइक्रोसॉफ्ट एसक्यूएल सर्वर 2008
उत्तर
लघु जवाब है नहीं ..
आप एसक्यूएल सर्वर में query..atleast निष्पादित करने से पहले पंक्तियों की संख्या नहीं मिल सकता है।
यह करने के लिए सबसे अच्छा तरीका है,
Select count(*) from <table> where <condtion>
का उपयोग तो
[delete]or [update] [set col='val']
from <table> where <condtion>
हालांकि आप प्रभावित होने वाली पंक्तियों की कुल संख्या प्राप्त करने के लिए SQL सर्वर विश्लेषणात्मक कार्यों का उपयोग कर सकते हैं। लेकिन यह केवल रनटाइम पर है। – rvphx
हमेशा सही नहीं होगा क्योंकि अद्यतन पंक्तियों को छोड़ देगा जहां कुछ भी बदलने की आवश्यकता नहीं है। उदाहरण के लिए: नया मान और पुराना मान पहले से ही समान है। –
@ हिमांशु सैनी: जहां तक मुझे पता है, SQL सर्वर यह जांच नहीं करेगा कि अद्यतन करने से पहले पुराने और नए मान समान हैं या नहीं। यह बस मिलान की स्थितियों के साथ सभी रिकॉर्ड अद्यतन करता है। अगर आपके पास इसके बारे में कोई दस्तावेज है तो कृपया साझा करें। यह मेरे लिए नई शिक्षा होगी –
सरल समाधान SELECT * FROM...
में SELECT Count(*) FROM ...
के साथ कॉलम को प्रतिस्थापित करना है और आपके शेष प्रश्न (WHERE
खंड को समान होने की आवश्यकता है) इसे चलाने से पहले। यह आपको बताता है कि कितने पंक्तियों प्रभावित हो जाएगा
अनुमान कार्य योजना लागू करके आप पंक्तियों देने के लिए जा रहा है आंकड़ों के आधार पर प्रभावित अपने वास्तविक क्वेरी निष्पादित है, इसलिए यह जीत लिया ' टी वास्तव में इस मामले में आपकी मदद नहीं करता है।
जो मैं अनुशंसा करता हूं वह आपके UPDATE statement
या DELETE statement
की प्रतिलिपि बना रहा है और इसे SELECT
में बदल रहा है। यह देखने के लिए कि कितनी पंक्तियां वापस आती हैं और आपके पास यह जवाब है कि कितनी पंक्तियां अपडेट या हटा दी गई होंगी।
उदाहरण के लिए:
UPDATE t
SET t.Value = 'Something'
FROM MyTable t
WHERE t.OtherValue = 'Something Else'
हो जाता है:
SELECT COUNT(*)
FROM MyTable t
WHERE t.OtherValue = 'Something Else'
तुम भी BEGIN TRANSACTION उपयोग करने से पहले आपरेशन निष्पादित किया जाता है। आप प्रभावित पंक्तियों की संख्या देख सकते हैं। वहां से, परिणामों को कम करें या डेटा को वापस मूल स्थिति में रखने के लिए रोलबैक का उपयोग करें।
लेन-देन शुरू
अद्यतन तालिका सेट col = 'कुछ' जहां col2 = 'कुछ और';
कमिट/रोलबैक
- 1. माइक्रोसॉफ्ट एसक्यूएल सर्वर 2008 आर 2
- 2. माइक्रोसॉफ्ट एसक्यूएल सर्वर 2008 आर 2
- 3. माइक्रोसॉफ्ट एसक्यूएल सर्वर
- 4. माइक्रोसॉफ्ट एसक्यूएल सर्वर
- 5. एसक्यूएल सर्वर 2008 R2
- 6. एसक्यूएल सर्वर 2008
- 7. माइक्रोसॉफ्ट एसक्यूएल सर्वर 2000
- 8. माइक्रोसॉफ्ट एसक्यूएल सर्वर
- 9. माइक्रोसॉफ्ट एसक्यूएल सर्वर 2005
- 10. माइक्रोसॉफ्ट एसक्यूएल सर्वर
- 11. ज़ेंड फ्रेमवर्क 2 माइक्रोसॉफ्ट एसक्यूएल सर्वर 2008 डीबी कनेक्शन
- 12. एसक्यूएल सर्वर 2008 मैनेजमेंट स्टूडियो
- 13. एसक्यूएल सर्वर 2008
- 14. एसक्यूएल सर्वर 2005/2008
- 15. एसक्यूएल सर्वर 2008
- 16. एसक्यूएल सर्वर 2008
- 17. एसक्यूएल सर्वर 2008
- 18. एसक्यूएल सर्वर 2008
- 19. एसक्यूएल सर्वर 2008
- 20. एसक्यूएल सर्वर 2008
- 21. एसक्यूएल सर्वर 2008 एक्सप्रेस
- 22. एसक्यूएल सर्वर 2008
- 23. एसक्यूएल सर्वर 2008
- 24. एसक्यूएल सर्वर 2008
- 25. एसक्यूएल सर्वर 2008
- 26. एसक्यूएल रिपोर्ट सर्वर 2008
- 27. एसक्यूएल सर्वर 2008
- 28. एसक्यूएल सर्वर 2008
- 29. एसक्यूएल सर्वर 2008
- 30. एसक्यूएल सर्वर 2008
नहीं यह संभव नहीं दो प्रश्नों कर के बिना है। यद्यपि आपको ऐसा करने की ज़रूरत क्यों है? अनुरोध के कारण के आधार पर आप पूछताछ कर सकते हैं कि क्वेरी '@@ ROWCOUNT' जांचें, फिर इसे अपेक्षित होने पर प्रतिबद्ध करें। या क्वेरी के साथ पंक्ति गणना को वापस करने के लिए 'COUNT (*) ओवर()' का उपयोग करें। –