2017-02-08 6 views
7

मैं यह पता लगाने की कोशिश कर रहा हूं कि तालिका से प्रति खाता एक ही यादृच्छिक पंक्ति कैसे प्राप्त की जाए। तालिका में प्रति खाता एकाधिक पंक्तियां हैं या कुछ मामलों में केवल एक पंक्ति है। मैं अपने चयन में एक यादृच्छिक परिणाम वापस पाने में सक्षम होना चाहता हूं, इसलिए प्रत्येक दिन मैं एक ही कथन चलाता हूं, मुझे एक अलग परिणाम मिल सकता है।एसक्यूएल सर्वर 2014 समूह में यादृच्छिक मूल्य

select number, phonenumber 
from phones_master with(nolock) 
where phonetypeid = '3' 

यह एक नमूना परिणाम सेट

number   phonenumber  
-------------------------- 
4130772,  6789100949  
4130772,  6789257988 
4130774,  6784519098 
4130775,  6786006874 

नामक कॉलम Number खाता है:

इस क्वेरी का आधार है। मैं एक यादृच्छिक पंक्ति वापस करना चाहता हूं। तो क्वेरी के ऊपर सेट नमूना परिणाम के आधार पर 3 पंक्तियों को वापस करना चाहिए।

किसी भी सुझाव की सराहना की जाएगी। मैं इस के साथ दीवार के खिलाफ अपना सिर मार रहा हूँ।

धन्यवाद

+2

क्यों 'के साथ (NOLOCK)' में सुधार करना चाहिए? इसका मतलब है "गंदा डेटा पढ़ें", न कि "कोई ताला न लें"। यदि आपके पास लॉकिंग समस्याएं हैं, तो SNAPSHOT ISOLATION –

उत्तर

8

आप ROW_NUMBER()

Select Top 1 with ties * 
From YourTable 
Order by Row_Number() over (Partition By Number Order By NewID()) 

रिटर्न (उदाहरण के लिए)

number phonenumber 
4130772 6789257988 
4130774 6784519098 
4130775 6786006874 
+3

'संबंधों के साथ शीर्ष 1' पर स्विच करने पर विचार करें;) –

+1

@Prdp इच्छा मैं अवधारणा के लिए क्रेडिट ले सकता हूं, लेकिन मैं उस उज्ज्वल नहीं हूं। –

0

के साथ मिलकर टाई साथ उपयोग कर सकते हैं यदि आप किसी अन्य तालिका है, तो account कहा जाता है जहां उन number's जेनरेट/बनाए गए हैं तो Cross Apply का उपयोग करके यहां एक तरीका है।

SELECT at.number, 
     cs.phonenumber 
FROM account_table at 
     CROSS apply(SELECT TOP 1 phonenumber 
        FROM phones_master pm 
        WHERE at.number = pm.number 
          AND phonetypeid = '3' 
        ORDER BY Newid()) cs (phonenumber) 

इसके अलावा इस पर विचार करता है accountnumber में तालिका में अनूठा है।

number पर एक Index और phones_master तालिका में phonetypeid बनाना प्रदर्शन

संबंधित मुद्दे