मैं इसे निम्न तरीके से करूँगा:
-
अपनी मौजूदा तालिका से एक अस्थायी तालिका बनाएं:
CREATE TEMPORARY TABLE data_to_keep LIKE table_with_dupes_in_it
-
केवल अपने इच्छित रिकॉर्ड के साथ अस्थायी तालिका को पॉप्युलेट करें:
INSERT INTO data_to_keep SELECT DISTINCT * FROM table_with_dupes_in_it
-
टेबल खाली करें
TRUNCATE TABLE table_with_dupes_in_it
-
डेटा को अस्थायी तालिका से मूल तालिका में लौटाएं
INSERT INTO table_with_dupes_in_it SELECT * FROM data_to_keep;
-
साफ़ करें
DROP TEMPORARY TABLE data_to_keep
सलाह दी जाती है कि यदि प्रश्न में तालिका एक बड़ी है तो यह बड़ी मात्रा में स्मृति और/या भंडारण खा सकता है। यदि यह एक बड़ी तालिका है तो मैं एक अस्थायी तालिका के बजाय एक वास्तविक तालिका का उपयोग करने के इच्छुक हूं ताकि आपके डीबी सर्वर पर अत्यधिक मात्रा में स्मृति न खाएं।
जोड़ने के लिए संपादित करें:
यदि आप केवल आंशिक नकल के बारे में चिंतित हैं (पंक्तियाँ जहाँ केवल कुछ डेटा पहले दर्ज किए गए डेटा के समान है) तो आप GROUP BY का उपयोग करना चाहेंगे। जब आप GROUP BY का उपयोग करते हैं, तो आप MySQL को केवल एक पंक्ति वापस करने के लिए सीमित कर सकते हैं जिसमें उन सभी के बजाय दिए गए डेटा शामिल हैं।
SELECT *
FROM table
GROUP BY column_name
आपको उन स्तंभों पर UNIQUE अनुक्रमणिका का उपयोग करने पर भी विचार करना चाहिए जिन्हें आप डुप्लिकेट डेटा नहीं रखना चाहते हैं, यह उपयोगकर्ताओं को पहले स्थान पर डुप्लिकेट डेटा डालने से रोकेगा।