Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में दो कॉलम से DISTINCT मान कैसे चुनें?


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)
  • अनुक्रम-अननिरपेक्ष जोड़े की गिनती

  1. - MySQL में MAX() और सबक्वेरी से दो कॉलम के योग का अधिकतम मान वाली पंक्ति चुनें

    दो कॉलम के योग का अधिकतम मान वाली पंक्ति ढूंढने के लिए सबक्वेरी में MAX(कॉलम1 + कॉलम2) का उपयोग करें। सिंटैक्स SELECT * FROM टेबल_नाम WHERE कॉलम1 + कॉलम2 = (SELECT MAX(कॉलम1 + कॉलम2) FROM टेबल_नाम); उदाहरण 1. टेबल बनाएं CREATE TABLE DemoTable1587 (Value1 INT, Value2 INT); 2. डेटा डालें INSERT

  1. - MySQL में कॉलम मानों से बेतरतीब ढंग से 2 मान चुनें?

    बेतरतीब ढंग से चुनने के लिए ORDER BY RAND() का उपयोग करें। MySQL में केवल 2 मान चुनने के लिए LIMIT 2 का उपयोग करें। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1815 ( Question text ); Query OK, 0 rows affected (0.00 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: my

  1. - MySQL में DISTINCT कॉलम से औसत कैसे चुनें?

    MySQL में विशिष्ट (DISTINCT) मानों के आधार पर औसत निकालने के लिए, सबक्वेरी में DISTINCT का उपयोग करके डुप्लिकेट हटाएं, फिर बाहरी क्वेरी में AVG() लागू करें। उदाहरण: विशिष्ट छात्र-मान संयोजनों का औसत डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1934 ( StudentName VARCHAR(20), StudentMa