MySQL में किसी कॉलम में केवल उन्हीं मानों को प्राप्त करने के लिए जो ठीक एक बार आते हैं (डुप्लिकेट नहीं), GROUP BY के साथ HAVING COUNT(*) = 1 का उपयोग करें।
सिंटैक्स
SELECT column_name FROM table_name GROUP BY column_name HAVING COUNT(*) = 1;
व्यावहारिक उदाहरण
1. टेबल बनाएं और डुप्लिकेट डेटा डालें
mysql> CREATE TABLE DemoTable723 (Value INT); Query OK, 0 rows affected (0.58 sec) mysql> INSERT INTO DemoTable723 VALUES (100), (200), (200), (100), (300), (400), (400), (600), (400), (200); Query OK, 10 rows affected (0.15 sec)
2. सभी रिकॉर्ड्स देखें
mysql> SELECT * FROM DemoTable723; +-------+ | Value | +-------+ | 100 | | 200 | | 200 | | 100 | | 300 | | 400 | | 400 | | 600 | | 400 | | 200 | +-------+ 10 rows in set (0.00 sec)
3. केवल अद्वितीय मान प्राप्त करें (जो ठीक एक बार आते हैं)
mysql> SELECT * FROM DemoTable723 GROUP BY Value HAVING COUNT(Value) = 1; +-------+ | Value | +-------+ | 300 | | 600 | +-------+ 2 rows in set (0.00 sec)
व्याख्या
100- 2 बार आता है → बाहर200- 3 बार आता है → बाहर300- 1 बार आता है → शामिल400- 3 बार आता है → बाहर600- 1 बार आता है → शामिल
वैकल्पिक तरीके
सबक्वेरी के साथ
SELECT Value FROM DemoTable723
WHERE Value IN (
SELECT Value FROM DemoTable723
GROUP BY Value HAVING COUNT(*) = 1
);
विंडो फ़ंक्शन (MySQL 8.0+)
SELECT Value FROM (
SELECT Value, COUNT(*) OVER (PARTITION BY Value) AS cnt
FROM DemoTable723
) t WHERE cnt = 1;
संबंधित पैटर्न
| आवश्यकता | क्वेरी |
|---|---|
| केवल डुप्लिकेट मान (1 से अधिक बार) | HAVING COUNT(*) > 1 |
| डुप्लिकेट की गिनती सहित | SELECT Value, COUNT(*) FROM ... GROUP BY Value HAVING COUNT(*) > 1 |
| प्रत्येक मान की पहली घटना | SELECT * FROM ... GROUP BY Value (MySQL एक्सटेंशन) |
| सभी अद्वितीय मान (DISTINCT) | SELECT DISTINCT Value FROM ... |
प्रदर्शन नोट
GROUP BY + HAVING के लिए कॉलम पर इंडेक्स होने से क्वेरी तेज़ होती है।