Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में N पंक्तियों का चयन करना

जैसा कि पहले टिप्पणी की गई थी, ऐसा इसलिए है क्योंकि आप sys.columns . की पंक्तियों की संख्या तक पहुंच गए हैं . यहां संख्याओं की सूची बनाने का एक और तरीका है या जिसे अन्य लोग Numbers Table कहते हैं या Tally Table .

यह कैस्केड CTE . का उपयोग करता है s और इसे टैली टेबल बनाने का सबसे तेज़ तरीका कहा जाता है:

DECLARE @Range AS INT = 7374

;WITH E1(N) AS( -- 10 ^ 1 = 10 rows
    SELECT 1 FROM(VALUES (1),(1),(1),(1),(1),(1),(1),(1),(1),(1))t(N)
),
E2(N) AS(SELECT 1 FROM E1 a CROSS JOIN E1 b), -- 10 ^ 2 = 100 rows
E4(N) AS(SELECT 1 FROM E2 a CROSS JOIN E2 b), -- 10 ^ 4 = 10,000 rows
E8(N) AS(SELECT 1 FROM E4 a CROSS JOIN E4 b), -- 10 ^ 8 = 10,000,000 rows
CteTally(N) AS(
    SELECT TOP(@Range) ROW_NUMBER() OVER(ORDER BY(SELECT NULL))
    FROM E8
)
SELECT * FROM CteTally

यदि आपको 10,000 से अधिक पंक्तियों की आवश्यकता है, तो आप आसानी से एक और सीटीई जोड़ सकते हैं।

टैली टेबल के बारे में अधिक जानकारी के लिए, यह उत्कृष्ट लेख पढ़ें जेफ मोडन द्वारा।

टैली टेबल जेनरेट करने के तरीकों के बीच प्रदर्शन तुलना के लिए, इसे पढ़ें .

जेफ के लेख से लिया गया स्पष्टीकरण:

<ब्लॉकक्वॉट>

सीटीई को E1 . कहा जाता है (जैसा कि वैज्ञानिक संकेतन के लिए 10E1 में है) दस से अधिक कुछ नहीं है SELECT 1 एकल परिणाम सेट के रूप में लौटाया गया है।

E2 एक CROSS JOIN करता है का E1 खुद के साथ। यह 10*10 या अधिकतम 100 पंक्तियों का एकल परिणाम सेट देता है। मैं "अप टू" कहता हूं क्योंकि यदि टॉप फ़ंक्शन 100 या उससे कम है, तो सीटीई "स्मार्ट" हैं यह जानने के लिए कि वास्तव में इसे और आगे जाने की आवश्यकता नहीं है और E4 और E8 खेल में भी नहीं आएगा। अगर TOP इसका मान 100 से कम है, न कि सभी 100 पंक्तियों का जो E2 . है बनाने में सक्षम है। यह हमेशा TOP . के अनुसार पर्याप्त होगा समारोह।

आप वहां से फॉलो कर सकते हैं। E4 एक CROSS JOIN है E2 . का और 100*100 या 10,000 पंक्तियाँ और E8 तक बनाएगा एक CROSS JOIN है का E4 जो अधिकांश लोगों की आवश्यकता से अधिक पंक्तियाँ बनाएगा। यदि आपने और अधिक किया है, तो बस एक E16 जोड़ें CROSS JOIN के रूप में E8 . का और अंतिम FROM . को बदलें FROM E16 . का खंड ।

इस बुरे लड़के के बारे में वास्तव में आश्चर्यजनक बात यह है कि वह है ZEROREADS . बिल्कुल नहीं, नाडा, शून्य।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं एक परिणाम सेट में SQL सर्वर के सभी डेटाबेस में सभी तालिकाओं को कैसे सूचीबद्ध करूं?

  2. निकाय ढांचे का उपयोग करके प्राथमिक कुंजी मान अपडेट करें

  3. SQL सर्वर बदलें, निश्चित वर्ण के बाद सभी को हटा दें

  4. SQL सर्वर स्ट्रिंग को डेटाटाइम में कनवर्ट करता है

  5. SQL सर्वर एजेंट जॉब (T-SQL) के जॉब स्टेप्स प्राप्त करने के 3 तरीके