तालिका स्थान पर अद्वितीय अनुक्रमणिका जोड़ें ताकि कोई डुप्लिकेट रिकॉर्ड सम्मिलित न हो
ALTER IGNORE TABLE location ADD UNIQUE KEY ix1(country, city);
यह स्वचालित रूप से तालिका से डुप्लिकेट रिकॉर्ड हटा देगा और भविष्य में सम्मिलित प्रश्नों के लिए आपको INSERT IGNORE
का उपयोग करना होगा डुप्लिकेट त्रुटियों से बचने के लिए क्लॉज।
लेकिन जैसा कि @AD7six
. द्वारा सुझाया गया है टिप्पणियों में, यह MySQL संस्करणों पर काम नहीं कर सकता है 5.1.41,5.5.1-m2, 6.0
:बग देखें यहां
या DELETE
. का उपयोग करके डुप्लिकेट निकालने का वैकल्पिक सुरक्षित तरीका क्वेरी:
DELETE a
FROM location a
LEFT JOIN (
SELECT locid
FROM location
GROUP BY country, city
)b
ON a.locid = b.locid
WHERE b.locid IS NULL;
auto_increment
. के मानों को फिर से स्थापित करने के लिए कॉलम locid
, आप बस primary key
को छोड़ सकते हैं locid
. पर और इसे फिर से बनाएँ:
ALTER TABLE location DROP column locid;
ALTER TABLE location
ADD COLUMN locid INT unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
या locid
. के मानों को फिर से बसाने का वैकल्पिक तरीका UPDATE
का उपयोग कर रहे हैं क्वेरी:
SET var_locid = 0;
UPDATE location
SET locid = (@var_locid := @var_locid + 1)
ORDER BY locid ASC;