2012-06-16 15 views
7

के पहले उदाहरण का चयन करें मेरे पास एक टेबल है, myTable जिसमें ID और patientID में दो फ़ील्ड हैं। एक ही रोगी एक अलग आईडी के साथ तालिका में एक से अधिक हो सकता है। मैं यह कैसे सुनिश्चित कर सकता हूं कि मुझे प्रत्येक patientID का केवल ONE उदाहरण प्राप्त हो।रिकॉर्ड

संपादित करें: मुझे पता है कि यह सही डिज़ाइन नहीं है, लेकिन मुझे डेटाबेस से कुछ जानकारी प्राप्त करने की आवश्यकता है और आज और फिर इसे ठीक करें।

+0

क्या यह तय करने के लिए कोई मानदंड है कि कौन सा रिकॉर्ड वापस करना है या आप किसी को यादृच्छिक रूप से वापस करना चाहते हैं? –

+0

'शीर्ष 1' केवल एक रिकॉर्ड देता है। मुझे हर मरीज आईडी का बिल्कुल एक उदाहरण चाहिए। इससे कोई फर्क नहीं पड़ता कि कौन सा tblClaims.id छोड़ा गया है। – wootscootinboogie

+1

फिर सीटीई का उपयोग करने का समाधान –

उत्तर

20

आप एक CTEROW_NUMBER समारोह के साथ इस्तेमाल कर सकते हैं:

WITH CTE AS(
    SELECT myTable.* 
    , RN = ROW_NUMBER()OVER(PARTITION BY patientID ORDER BY ID) 
    FROM myTable 
) 
SELECT * FROM CTE 
WHERE RN = 1 
+3

यदि यह संभव हो तो मैं दस बार इस उत्तर को ऊपर उठाऊंगा। – AFract

0

आपकी क्वेरी के अंत में LIMIT 1 जोड़ने का आसान तरीका होगा। यह सुनिश्चित करेगा कि परिणाम सेट में केवल एक पंक्ति लौटा दी जाएगी।

+1

LIMIT जाने का तरीका है MySQL, है ना? –

+0

हां, सीमा एसक्यूएल सर्वर – wootscootinboogie

+0

में नहीं है, यह 'एसईएलटी टॉप 1 ...' में एमएसएसक्यूएल –

3

ऐसा लगता है आप DISTINCT लिए देख रहे हैं की तरह:

SELECT DISTINCT patientID FROM myTable 

आप एक ही "प्रभाव" GROUP BY साथ प्राप्त कर सकते हैं:

SELECT patientID FROM myTable GROUP BY patientID 
+0

बिल्कुल नहीं। रोगी आईडी अलग-अलग tblclaims.id के साथ तालिका में एक से अधिक बार दिखाया जा सकता है। इसलिए यदि मैं अलग-अलग चयन करता हूं, तो इससे मुझे लगता है कि मैं उस रोगी को एक बार – wootscootinboogie

+0

@wootscootinboogie से अधिक लौटाता हूं, यदि आप अनुमान लगा रहे अनुमानों में अधिक फ़ील्ड जोड़ते हैं। केवल 'patientID' के 'DISTINCT' को आपको जो चाहिए वह आपको देना चाहिए। यदि आप 'DISTINCT patiendID, ID' करते हैं तो हाँ, आपको अलग-अलग संयोजन मिलेंगे, इस प्रकार एक से अधिक' patientID' –

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