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

MySQL में GROUP BY HAVING से गैर-डुप्लिकेट ID वाला रिकॉर्ड दिखाएं

उपक्वेरी में HAVING COUNT < 2 से अद्वितीय ID खोजना

जिन ID की केवल एक पंक्ति हो (डुप्लिकेट न हो), उन्हें खोजने के लिए उपक्वेरी में GROUP BY ... HAVING COUNT(*) < 2 का उपयोग करें, फिर मुख्य क्वेरी में IN से फ़िल्टर करें।

टेबल और डेटा

mysql> CREATE TABLE DemoTable (
    Id INT,
    ColorName VARCHAR(100)
);
Query OK, 0 rows affected (0.56 sec)
mysql> INSERT INTO DemoTable VALUES(100,'Red');
Query OK, 1 row affected (0.11 sec)
mysql> INSERT INTO DemoTable VALUES(101,'Green');
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable VALUES(101,'Blue');
Query OK, 1 row affected (0.28 sec)
mysql> INSERT INTO DemoTable VALUES(102,'Yellow');
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO DemoTable VALUES(100,'Purple');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable VALUES(100,'Black');
Query OK, 1 row affected (0.26 sec)

सभी रिकॉर्ड

mysql> SELECT * FROM DemoTable;
+------+-----------+
| Id   | ColorName |
+------+-----------+
| 100  | Red       |
| 101  | Green     |
| 101  | Blue      |
| 102  | Yellow    |
| 100  | Purple    |
| 100  | Black     |
+------+-----------+
6 rows in set (0.00 sec)

गैर-डुप्लिकेट ID (केवल एक बार आने वाले) वाले रिकॉर्ड

mysql> SELECT * FROM DemoTable 
    WHERE Id IN (SELECT Id FROM DemoTable GROUP BY Id HAVING COUNT(*) < 2);

परिणाम:

+------+-----------+
| Id   | ColorName |
+------+-----------+
| 102  | Yellow    |
+------+-----------+
1 row in set (0.07 sec)

व्याख्या: उपक्वेरी: Id 100 (3 बार), 101 (2 बार), 102 (1 बार)। HAVING COUNT(*) < 2 केवल 102 देता है। मुख्य क्वेरी Id 102 वाली पंक्ति लौटाती है।

वैकल्पिक (MySQL 8.0+): SELECT * FROM (SELECT *, COUNT(*) OVER (PARTITION BY Id) AS cnt FROM DemoTable) t WHERE cnt = 1;

  1. - MySQL में एक फ़ील्ड द्वारा ऑर्डर करें और बाकी रिकॉर्ड्स को उसी क्रम में प्रदर्शित करें

    MySQL में विशिष्ट रिकॉर्ड को प्राथमिकता देकर ऑर्डर करना कभी-कभी आप एक विशिष्ट रिकॉर्ड को शीर्ष पर रखना चाहते हैं जबकि बाकी रिकॉर्ड्स अपने मूल क्रम में रहें। MySQL में बूलियन अभिव्यक्ति (Id = 101) का उपयोग करके ORDER BY में यह प्राप्त किया जा सकता है। टेबल बनाना ); Query OK, 0 rows affected (0.82 s

  1. - MySQL में कॉलम मानों को अलग टेक्स्ट के साथ जोड़ें और एकल कॉलम में प्रदर्शित करें

    आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> ); Query OK, 0 rows affected (0.93 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable values(101,Chris); Query OK, 1 row affected (0.25 sec) mysq

  1. - MySQL में AND और OR ऑपरेटर के साथ विशिष्ट रिकॉर्ड कैसे प्राप्त करें

    उदाहरण टेबल बनाएं: ); डेटा डालें: INSERT INTO DemoTable2015 VALUES (4, Robert, US); क्वेरी StudentName=David OR (StudentCountryName=UK AND StudentId=3): WHERE StudentName = David OR StudentCountryName = UK AND StudentId = 3; परिणाम +-----------+-------------+--------------------+ | Stu