MySQL में दो कॉलम से अद्वितीय जोड़े प्राप्त करने के लिए LEAST() और GREATEST() फंक्शन के साथ DISTINCT उपयोग करें।
सिंटैक्स
SELECT DISTINCT LEAST(col1, col2) AS first_col, GREATEST(col1, col2) AS second_col FROM yourTableName;
उदाहरण
टेबल बनाना
mysql> create table SelectDistinctTwoColumns ( -> StudentId int, -> EmployeeId int -> ); Query OK, 0 rows affected (0.60 sec)
रिकॉर्ड डालना (कुछ उल्टे क्रम में)
mysql> insert into SelectDistinctTwoColumns values(100,101); mysql> insert into SelectDistinctTwoColumns values(102,103); mysql> insert into SelectDistinctTwoColumns values(104,105); mysql> insert into SelectDistinctTwoColumns values(100,101); -- डुप्लिकेट mysql> insert into SelectDistinctTwoColumns values(102,103); -- डुप्लिकेट mysql> insert into SelectDistinctTwoColumns values(106,107); mysql> insert into SelectDistinctTwoColumns values(104,105); -- डुप्लिकेट mysql> insert into SelectDistinctTwoColumns values(105,104); -- उल्टा क्रम (104,105 जैसा)
सभी रिकॉर्ड देखना
mysql> select *from SelectDistinctTwoColumns;
+-----------+------------+ | StudentId | EmployeeId | +-----------+------------+ | 100 | 101 | | 102 | 103 | | 104 | 105 | | 100 | 101 | | 102 | 103 | | 106 | 107 | | 104 | 105 | | 105 | 104 | -- उल्टा क्रम +-----------+------------+
अद्वितीय जोड़े प्राप्त करना (क्रम-अननिरपेक्ष)
mysql> select distinct least(StudentId, EmployeeId) as FirstColumn, -> greatest(StudentId, EmployeeId) as SecondColumn from SelectDistinctTwoColumns;
+-------------+--------------+ | FirstColumn | SecondColumn | +-------------+--------------+ | 100 | 101 | | 102 | 103 | | 104 | 105 | | 106 | 107 | +-------------+--------------+
व्याख्या
LEAST(a, b)— दो मानों में से छोटा लौटाता हैGREATEST(a, b)— दो मानों में से बड़ा लौटाता हैDISTINCT— डुप्लिकेट पंक्तियां हटाता है(100,101)और(101,100)दोनों(100,101)बन जाते हैं
अन्य तरीके
-- MySQL 8.0+ में ROW कंस्ट्रक्टर SELECT DISTINCT ROW(LEAST(a,b), GREATEST(a,b)) FROM table_name; -- CONCAT के साथ (स्ट्रिंग कॉलम के लिए) SELECT DISTINCT CONCAT(LEAST(a,b), ',', GREATEST(a,b)) FROM table_name; -- यदि क्रम महत्वपूर्ण है (सामान्य DISTINCT) SELECT DISTINCT col1, col2 FROM table_name;
उपयोग के मामले
- दो-तरफा संबंधों में डुप्लिकेट एज हटाना (ग्राफ डेटा)
- मित्रता/फॉलो संबंध जहां (A,B) = (B,A)
- अनुक्रम-अननिरपेक्ष जोड़े की गिनती