Để chỉ hiển thị các giá trị xuất hiện duy nhất một lần (loại bỏ hoàn toàn các giá trị trùng lặp), dùng GROUP BY kết hợp HAVING COUNT(*) = 1.
Ví dụ minh họa
Tạo bảng:
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Subject VARCHAR(100)
);
Chèn dữ liệu (có trùng lặp):
mysql> INSERT INTO DemoTable(Subject) VALUES('MySQL');
mysql> INSERT INTO DemoTable(Subject) VALUES('MongoDB');
mysql> INSERT INTO DemoTable(Subject) VALUES('Java');
mysql> INSERT INTO DemoTable(Subject) VALUES('MongoDB');
mysql> INSERT INTO DemoTable(Subject) VALUES('C');
mysql> INSERT INTO DemoTable(Subject) VALUES('C++');
mysql> INSERT INTO DemoTable(Subject) VALUES('Java');
mysql> INSERT INTO DemoTable(Subject) VALUES('C');
Xem dữ liệu:
mysql> SELECT * FROM DemoTable;
Kết quả
+----+---------+ | Id | Subject | +----+---------+ | 1 | MySQL | | 2 | MongoDB | | 3 | Java | | 4 | MongoDB | | 5 | C | | 6 | C++ | | 7 | Java | | 8 | C | +----+---------+
Chỉ lấy giá trị xuất hiện 1 lần:
mysql> SELECT Subject FROM DemoTable
-> GROUP BY Subject
-> HAVING COUNT(*) = 1;
Kết quả
+---------+ | Subject | +---------+ | MySQL | | C++ | +---------+
Phân biệt: DISTINCT chỉ loại bỏ trùng lặp trong kết quả (giữ 1 bản đại diện). Cách này loại bỏ hẳn các giá trị có bất kỳ trùng lặp nào.