डुप्लिकेट रिकॉर्ड वाली टेबल से केवल एक रिकॉर्ड हटाने के लिए DELETE ... LIMIT 1 का उपयोग करें।
सिंटैक्स
DELETE FROM टेबल_नाम WHERE कॉलम_नाम = मान LIMIT 1;
उदाहरण
1. टेबल बनाएं
mysql> CREATE TABLE DemoTable (Amount INT);
2. डेटा डालें (50 तीन बार)
mysql> INSERT INTO DemoTable VALUES(50), (100), (50), (70), (90), (50);
3. सभी रिकॉर्ड
mysql> SELECT * FROM DemoTable;
+--------+ | Amount | +--------+ | 50 | | 100 | | 50 | | 70 | | 90 | | 50 | +--------+
4. एक '50' हटाएं
mysql> DELETE FROM DemoTable WHERE Amount = 50 LIMIT 1;
5. परिणाम
mysql> SELECT * FROM DemoTable;
+--------+ | Amount | +--------+ | 100 | | 50 | | 70 | | 90 | | 50 | +--------+
महत्वपूर्ण नोट
LIMIT 1बिना ORDER BY के अनिर्धारित पंक्ति हटाता है- नवीनतम/पुराना हटाने के लिए ORDER BY जोड़ें
निर्दिष्ट पंक्ति हटाएं (सबसे पुराना)
DELETE FROM DemoTable WHERE Amount = 50 ORDER BY Id ASC -- मान लें Id कॉलम है LIMIT 1;
निर्दिष्ट पंक्ति हटाएं (सबसे नया)
DELETE FROM DemoTable WHERE Amount = 50 ORDER BY Id DESC LIMIT 1;
सभी डुप्लिकेट हटाएं (एक रखें)
-- MySQL 8.0+ CTE के साथ
WITH ranked AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY Amount ORDER BY Id) AS rn
FROM DemoTable
)
DELETE FROM DemoTable
WHERE Id IN (SELECT Id FROM ranked WHERE rn > 1);
चेतावनी
LIMIT के बिना DELETE WHERE Amount=50 सभी तीन पंक्तियां हटा देगा।