declare @top int
set @top = 5
select top @top * from tablename
क्या यह संभव है?इसे गतिशील बनाने के बिना SQL सर्वर में चयनित कथन में शीर्ष के साथ चर का उपयोग करें
या ऐसे तर्क के लिए कोई विचार (मैं गतिशील क्वेरी का उपयोग नहीं करना चाहता)?
declare @top int
set @top = 5
select top @top * from tablename
क्या यह संभव है?इसे गतिशील बनाने के बिना SQL सर्वर में चयनित कथन में शीर्ष के साथ चर का उपयोग करें
या ऐसे तर्क के लिए कोई विचार (मैं गतिशील क्वेरी का उपयोग नहीं करना चाहता)?
हाँ, SQL सर्वर 2005 में यह top
खंड में एक चर का उपयोग करना संभव है।
select top (@top) * from tablename
एसक्यूएल सर्वर 2005 वास्तव में हमें एक चर, अभिव्यक्ति या कथन का उपयोग करके शीर्ष खंड को पैरामीटर करने की अनुमति देता है। तो अगर आप की तरह कर सकते हैं:
SELECT TOP (@foo) a FROM table ORDER BY a
SELECT TOP (SELECT COUNT(*) FROM somewhere else) a FROM table ORDER BY a
SELECT TOP (@foo + 5 * 4/2) a FROM table ORDER BY a
2005 में और बाद में, आप इसे कर सकते हैं क्योंकि इस धागे में कई जवाब हैं।
क्या कम ज्ञात है कि आप इसे SEK ROWCOUNT का उपयोग करके 2k में भी प्राप्त कर सकते हैं।
-- Works in all versions
SELECT TOP 10
-- Does not work on 2000
SELECT TOP (10)
SELECT TOP (@rows)
-- Works in both 2ooo and 2oo5
SET ROWCOUNT @max
SELECT *
FROM ...
SET ROWCOUNT 0
ध्यान दें, यदि आप अंत में सेट ROWCOUNT 0 भूल जाते हैं, सीमा बनी रहती है .. और आप :-)
यह भी ध्यान रखें कि सेट ROWCOUNT निष्पादन योजना को प्रभावित नहीं करता है, इसलिए एसक्यूएल 2005 में टॉप का उपयोग करना पसंद है। – Guffa
'SET ROWCOUNT' के बारे में चर्चा के लिए वैकल्पिक उत्तर – Paresh
+1 के लिए धन्यवाद। यह वह समाधान नहीं है जिसका मैंने उपयोग किया था, लेकिन मुझे यह पसंद है कि आपने इसे – Sam
आपके प्रयास के लिए धन्यवाद कीड़े खोजने के लिए बहुत कठिन साथ खत्म हो जाएगा, यह वास्तव में मदद की मेरे लिए!!! – Paresh
यह पूरी तरह से अजीब है ... मुझे इस बारे में पता नहीं था और मैं इस पर कुछ मिनट के लिए अटक गया। धन्यवाद (+1) – Christos