एक सहायक संपादक ने प्रत्येक कथन से पहले 'चयन करें' जोड़ा लेकिन इस आइटम की बात यह है कि यह केवल एक आइटम नहीं, बल्कि प्रत्येक पंक्ति के लिए अद्वितीय कुंजी उत्पन्न कर सकता है (इसके लिए मैं रैंड () फ़ंक्शन)। उदाहरण के लिए :TblExample से शीर्ष 100 रैंड (),* चुनें
सभी 100 पंक्तियों के लिए समान यादृच्छिक मान लौटाएगा।
जबकि:tblexample
से टॉप 100 ABS(CHECKSUM(NEWID())% 10),* चुनेंरिटर्न में प्रत्येक पंक्ति पर 0 और 9 के बीच एक अलग यादृच्छिक मान लौटाएगा। इसलिए जब चयन कॉपी और पेस्ट करना आसान बनाता है, तो आप तर्क को एक चयन कथन में कॉपी कर सकते हैं यदि इसकी आवश्यकता है।
यह 0-9 के बीच एक यादृच्छिक संख्या उत्पन्न करता है
SELECT ABS(CHECKSUM(NEWID()) % 10)
1 से 6
SELECT ABS(CHECKSUM(NEWID()) % 6) + 1
3 से 6
SELECT ABS(CHECKSUM(NEWID()) % 4) + 3
डायनामिक (एइलर्ट हेजेल्मेसेथ्स कमेंट पर आधारित, बग को ठीक करने के लिए अपडेट किया गया (+ से -))
SELECT ABS(CHECKSUM(NEWID()) % (@max - @min - 1)) + @min
टिप्पणियों के आधार पर अपडेट किया गया:
NEWID
यादृच्छिक स्ट्रिंग उत्पन्न करता है (बदले में प्रत्येक पंक्ति के लिए)CHECKSUM
स्ट्रिंग का मान लेता है और नंबर बनाता है- मापांक (
%
) उस संख्या से भाग देता है और शेष देता है (मतलब अधिकतम मान आपके द्वारा उपयोग की जाने वाली संख्या से एक कम है) ABS
नकारात्मक परिणामों को सकारात्मक में बदलता है- फिर 0 परिणामों को समाप्त करने के लिए परिणाम में एक जोड़ें (एक पासा रोल अनुकरण करने के लिए)