Trong MySQL, từ khóa DISTINCT
được sử dụng để loại bỏ các bản sao và chỉ trả về các hàng duy nhất trong kết quả truy vấn. Dưới đây là hướng dẫn chi tiết về cách sử dụng DISTINCT
để lọc dữ liệu trùng lặp.
1. Câu lệnh cơ bản với DISTINCT
Câu lệnh cơ bản để sử dụng DISTINCT
trong MySQL như sau:
SELECT DISTINCT column1, column2, ...
FROM table_name;
2. Ví dụ cụ thể
Giả sử bạn có bảng employees
với các cột id
, name
, và department
. Bạn muốn lấy danh sách các phòng ban duy nhất mà không bị trùng lặp.
Dữ liệu ví dụ:
CREATE TABLE employees (
id INT,
name VARCHAR(100),
department VARCHAR(50)
);
INSERT INTO employees (id, name, department) VALUES
(1, 'Alice', 'HR'),
(2, 'Bob', 'Finance'),
(3, 'Charlie', 'HR'),
(4, 'David', 'IT'),
(5, 'Eve', 'Finance');
Truy vấn sử dụng DISTINCT
:
SELECT DISTINCT department
FROM employees;
Kết quả sẽ là:
HR
Finance
IT
3. DISTINCT với nhiều cột
Khi bạn sử dụng DISTINCT
với nhiều cột, MySQL sẽ trả về các hàng duy nhất dựa trên sự kết hợp của các giá trị trong các cột được chỉ định.
Ví dụ:
Nếu bạn muốn lấy danh sách các tổ hợp duy nhất của name
và department
:
SELECT DISTINCT name, department
FROM employees;
Kết quả sẽ là:
Alice, HR
Bob, Finance
Charlie, HR
David, IT
Eve, Finance
4. Sử dụng DISTINCT với COUNT
Nếu bạn muốn đếm số lượng giá trị duy nhất trong một cột, bạn có thể kết hợp DISTINCT
với hàm COUNT()
.
Ví dụ:
Đếm số lượng phòng ban duy nhất:
SELECT COUNT(DISTINCT department) AS unique_departments
FROM employees;
Kết quả sẽ là:
3
5. Lưu ý khi sử dụng DISTINCT
DISTINCT
hoạt động trên toàn bộ các cột được chỉ định trong câu lệnh SELECT
. Điều này có nghĩa là nếu bạn chỉ định nhiều cột, các hàng được trả về sẽ duy nhất dựa trên sự kết hợp của các giá trị trong tất cả các cột đó.
DISTINCT
có thể làm giảm hiệu suất của truy vấn nếu bạn làm việc với các bảng lớn hoặc khi bạn áp dụng nó trên nhiều cột.
6. DISTINCT và ORDER BY
Khi sử dụng DISTINCT
kết hợp với ORDER BY
, bạn có thể sắp xếp các hàng duy nhất theo một thứ tự cụ thể.
Ví dụ:
Lấy danh sách các phòng ban duy nhất và sắp xếp theo tên phòng ban:
SELECT DISTINCT department
FROM employees
ORDER BY department;
Kết quả sẽ là:
Finance
HR
IT
7. DISTINCT với JOIN
Khi sử dụng DISTINCT
với các truy vấn kết hợp (JOIN), bạn có thể loại bỏ các bản sao từ kết quả kết hợp.
Ví dụ:
Giả sử bạn có hai bảng employees
và departments
, và bạn muốn lấy danh sách các phòng ban duy nhất từ kết quả kết hợp.
SELECT DISTINCT e.department
FROM employees e
JOIN departments d ON e.department = d.department_name;
Kết quả sẽ là danh sách các phòng ban duy nhất từ kết quả kết hợp.
Tổng Kết
DISTINCT
là một công cụ mạnh mẽ trong MySQL để loại bỏ các bản sao và chỉ trả về các giá trị duy nhất.
- Có thể sử dụng
DISTINCT
với một hoặc nhiều cột, và kết hợp với các hàm như COUNT()
và ORDER BY
.
- Lưu ý đến hiệu suất khi làm việc với các bảng lớn và nhiều cột.