2016-12-28 6 views
7

enter image description hereSQL सर्वर: डुप्लिकेट डेटा से कैसे बचें?

मैं उपरोक्त तस्वीर से पूछना चाहता हूं।

बाएं तस्वीर मूल डेटा है, सही तस्वीर क्वेरी डेटा है।

select distinct ID, Nickname, Revision 
from test_table 

यह क्वेरी तस्वीर के ऊपर दिखाई नहीं देती है।

डुप्लिकेट डेटा से कैसे बचें?

+0

वर्तमान में आप क्या परिणाम प्राप्त कर रहे हैं? –

+0

मैं केवल अंतिम संशोधन डेटा प्राप्त करना चाहता हूं। और मैं एसक्यूएल सर्वर का उपयोग करता हूं। – somputer

+0

@JaydipJ - बॉबट उपयोगकर्ता आईडी 1 के लिए तीसरा संस्करण है। – Hogan

उत्तर

16

एसक्यूएल सर्वर, सबक्वेरी में खिड़की समारोह ROW_NUMBER का उपयोग कर:

select t.id, t.nickname, t.revision 
from (
    select t.*, row_number() over (
      partition by t.id order by t.revision desc 
      ) rn 
    from your_table t 
    ) t 
where rn = 1; 

या TOP with tiesROW_NUMBER के साथ प्रयोग:

select top 1 with ties * 
from your_table 
order by row_number() over (
     partition by id order by revision desc 
     ) 

MySQL हैं:

select t.* 
from your_table t 
inner join (
    select id, MAX(revision) revision 
    from your_table 
    group by id 
    ) t1 on t.id = t1.id 
    and t.revision = t1.revision; 
5

एक और चाल TOP 1 with TIES

का उपयोग कर
SELECT Top 1 with ties * 
    FROM your_table t 
Order by row_number() over (partition BY t.id order by t.revision DESC) 
1
select distinct ID, Nickname, MAX(Revision) 
from test_table 
group by ID 
+0

आपको एक ही कथन में खंड द्वारा अलग और समूह दोनों का उपयोग करने की आवश्यकता नहीं है –

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