Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

केवल एक MySQL क्वेरी का उपयोग करके डुप्लिकेट निकालें?

निम्नलिखित परीक्षण मामले पर विचार करें:

CREATE TABLE mytb (url_id int, url_addr varchar(100));

INSERT INTO mytb VALUES (1, 'www.google.com');
INSERT INTO mytb VALUES (2, 'www.microsoft.com');
INSERT INTO mytb VALUES (3, 'www.apple.com');
INSERT INTO mytb VALUES (4, 'www.google.com');
INSERT INTO mytb VALUES (5, 'www.cnn.com');
INSERT INTO mytb VALUES (6, 'www.apple.com');

जहां अब हमारी परीक्षण तालिका में शामिल है:

SELECT * FROM mytb;
+--------+-------------------+
| url_id | url_addr          |
+--------+-------------------+
|      1 | www.google.com    |
|      2 | www.microsoft.com |
|      3 | www.apple.com     |
|      4 | www.google.com    |
|      5 | www.cnn.com       |
|      6 | www.apple.com     |
+--------+-------------------+
5 rows in set (0.00 sec)

तब हम बहु-तालिका DELETE सिंटैक्स इस प्रकार है:

DELETE t2
FROM   mytb t1
JOIN   mytb t2 ON (t2.url_addr = t1.url_addr AND t2.url_id > t1.url_id);

... जो डुप्लिकेट प्रविष्टियों को हटा देगा, केवल url_id . पर आधारित पहला url छोड़ देगा :

SELECT * FROM mytb;
+--------+-------------------+
| url_id | url_addr          |
+--------+-------------------+
|      1 | www.google.com    |
|      2 | www.microsoft.com |
|      3 | www.apple.com     |
|      5 | www.cnn.com       |
+--------+-------------------+
3 rows in set (0.00 sec)

अपडेट करें - ऊपर नई टिप्पणियों के अलावा:

यदि डुप्लीकेट URL का प्रारूप समान नहीं होगा, तो आप REPLACE() www. . को हटाने का कार्य करता है या http:// भागों। उदाहरण के लिए:

DELETE t2
FROM   mytb t1
JOIN   mytb t2 ON (REPLACE(t2.url_addr, 'www.', '') = 
                   REPLACE(t1.url_addr, 'www.', '') AND 
                   t2.url_id > t1.url_id);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में SQL स्क्रिप्ट कैसे चलाएं?

  2. मैसकल त्रुटि 1452 - चाइल्ड रो को जोड़ या अपडेट नहीं कर सकता:एक विदेशी कुंजी बाधा विफल हो जाती है

  3. MySQL पर एक उपयोगकर्ता बनाना

  4. कौन सी SQL क्वेरी बेहतर है, इसके विरुद्ध मिलान करें या LIKE करें?

  5. JSON_UNQUOTE () - MySQL में JSON दस्तावेज़ से उद्धरण निकालें