I asked this question a while back। जवाब महान काम किया:क्या मैं एकाधिक कॉलम के आधार पर डेटाबेस डुप्लिकेट हटा सकता हूं? कॉलम के आधार पर डुप्लिकेट रिकॉर्ड हटाने के लिए
delete from tbl
where id NOT in
(
select min(id)
from tbl
group by sourceid
)
अब मैं एक simillar स्थिति लेकिन डुप्लिकेट रिकॉर्ड की परिभाषा एकाधिक स्तंभों पर आधारित है। मैं डुप्लिकेट रिकॉर्ड्स की पहचान करने के लिए इस उपरोक्त एसक्यूएल को कैसे बदल सकता हूं जहां एक अद्वितीय रिकॉर्ड को Col1 + Col2 + Col3 से संयोजित के रूप में परिभाषित किया गया है। क्या मैं ऐसा कुछ करूंगा?
delete from tbl
where id NOT in
(
select min(id)
from tbl
group by col1, col2, col3
)
सिद्धांत अभी भी खड़ा है - इससे कोई फर्क नहीं पड़ता कि समूहांकन एक या कई स्तंभों से है या नहीं। आप समूह में केवल पहली पंक्ति को बनाए रखने जा रहे हैं। लेकिन - अगर आप मुझे यह कहते हुए कोई फर्क नहीं पड़ता - हटाए जाने से पहले अपना डेटा जांचना सुनिश्चित करें। चयन करने के लिए हटाएं और देखें कि क्या/जीवित नहीं रहेगा। –
@ निकोला मार्कोविनोविच - ऐसा लगता है कि यह सही काम कर रहा है लेकिन सिर्फ – leora
@leora की पुष्टि करना चाहता था, मुझे सिंटैक्स मिल गया है जिसे आप अवधारणात्मक/रिवर्स इंजीनियर के लिए बोझिल कर रहे हैं। और यह उन मामलों में अच्छी तरह से अनुवाद नहीं करता है जहां आईडी शून्य हो सकती है (क्योंकि 'इन नहीं' व्यवहार नहीं करता है क्योंकि जब आप नल शामिल होते हैं तो आप उम्मीद कर सकते हैं)। मुझे एहसास हुआ कि यहां एक कारक होने की संभावना नहीं है, लेकिन सीटीई के बारे में जानना महत्वपूर्ण है और उन मामलों के लिए EXISTS नहीं है जहां यह हो सकता है ... –