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

एक या दो कॉलम के आधार पर सभी डुप्लीकेट पंक्तियों का चयन करें?

अपना परिणाम प्राप्त करने का एक तरीका नेस्टेड क्वेरी और क्लॉज का उपयोग करना है:आंतरिक क्वेरी में उन लोगों का चयन करें जिनकी गिनती एक से अधिक है, और बाहरी क्वेरी में आईडी चुनें:

एकल स्तंभ चयन मानदंड के लिए निम्न उदाहरण देखें:

तालिका बनाएं:

CREATE TABLE `person` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `first` varchar(120) NOT NULL,
    `last` varchar(120) NOT NULL
);

टपल डालें:

INSERT INTO `person` ( `first`, `last`) VALUES
("mukta", "chourishi"),
("mukta", "chourishi"),
("mukta", "john"),
("carl", "thomas" );

आपको जो परिणाम चाहिए:

mysql> SELECT  `id` 
    -> FROM `person` 
    -> WHERE `first`=(SELECT `first` FROM `person` HAVING COUNT(`first`) > 1);
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
+----+
3 rows in set (0.00 sec)

[उत्तर]

लेकिन जैसे कि आपका चयन मानदंड एक से अधिक कॉलम के आधार पर है तो आप जॉइन का उपयोग कर सकते हैं।

इसे समझाने के लिए मैं एक चयन क्वेरी लिख रहा हूं जो एक इंटरमीडिएट टेबल बनाता है जिसका उपयोग जॉइन में दूसरी ऑपरेंड टेबल के रूप में किया जाएगा।

क्वेरी सभी मुट्ठी नाम का चयन करती है और उन डुप्लिकेट को कुछ अन्य पंक्तियों के साथ कॉलम करती है:
उदाहरण के लिए उन पंक्तियों का चयन करें जिनमें first और last नाम दोहराता है

mysql> SELECT `first`, `last`,  count(*)  as rows 
    -> FROM `person` 
    -> GROUP BY `first`, `last` 
    -> HAVING count(rows) > 1;
+-------+-----------+------+
| first | last      | rows |
+-------+-----------+------+
| mukta | chourishi |    2 |
+-------+-----------+------+
1 row in set (0.00 sec)

तो आपके पास first . की केवल एक जोड़ी है और last उन दोहराए गए नाम (या कुछ अन्य पंक्तियों के साथ डुप्लीकेट हैं)।

अब, प्रश्न यह है:id का चयन कैसे करें? इस पंक्ति का? शामिल हों का उपयोग करें! इस प्रकार है:

mysql> SELECT  p1.`id`
    -> FROM `person` as p1
    -> INNER JOIN (
    ->     SELECT `first`, `last`,  count(*)  as rows
    ->     FROM `person` 
    ->     GROUP BY `first`, `last` 
    ->     HAVING count(rows) > 1) as p
    -> WHERE p.`first` = p1.`first` and p.`last` = p1.`last`;  
+----+
| id |
+----+
|  1 |
|  2 |
+----+
2 rows in set (0.06 sec)

आप जितने चाहें उतने कॉलम के आधार पर चयन कर सकते हैं उदा। सिंगल कॉलम यदि आप ज्वाइन का उपयोग करना चाहते हैं तो अंतिम नाम हटा दें।



  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 किसी दिए गए डेटाटाइम रेंज में यादृच्छिक डेटाटाइम डालें

  2. विशिष्ट रूप से पत्रक मार्करों की पहचान

  3. फ्री MySQL सिंक्रोनाइज़ेशन टूल

  4. SQLAlchemy का उपयोग करके mysql में तालिका या कॉलम में टिप्पणियां कैसे जोड़ें?

  5. क्या मुझे क्लाइंट पर एक स्ट्रिंग के रूप में ग्राफ़क्यूएल आईडी को संभालना चाहिए?