Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Loại bỏ giá trị trùng lặp trong MySQL (chỉ giữ giá trị duy nhất)

Để 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.