Bài 10: Sử dụng MySQL DISTINCT để loại bỏ trùng lặp
Trong bài trước tôi đã trình bày về Lệnh SELECT truy vấn dữ liệu MySQL thì trong bài viết này, bạn sẽ học cách sử dụng mệnh đề MySQL DISTINCT với câu lệnh SELECT để loại bỏ các hàng trùng lặp trong một tập kết quả của câu truy vấn. Khi truy vấn dữ liệu từ một bảng, bạn có thể nhận được hàng trùng ...
Trong bài trước tôi đã trình bày về Lệnh SELECT truy vấn dữ liệu MySQL thì trong bài viết này, bạn sẽ học cách sử dụng mệnh đề MySQL DISTINCT với câu lệnh SELECT để loại bỏ các hàng trùng lặp trong một tập kết quả của câu truy vấn.
Khi truy vấn dữ liệu từ một bảng, bạn có thể nhận được hàng trùng lặp. Để loại bỏ các hàng trùng lặp, bạn phải sử dụng mệnh đề DISTINCT trong câu lệnh SELECT để loại bỏ các hàng trung lặp đó.
Cú pháp của việc sử dụng mệnh đề DISTINCT là như sau:
SELECT DISTINCT columns[,column1,column2] FROM table_name WHERE conditions
Ví dụ: Tronng truy vấn dưới đây sẽ lấy danh sách các nhân viên từ bảng employees.
SELECT lastname FROM employees;
Try In Out
Trong ví dụ trên bạn thấy có hai người có tên là Firrelli và bạn chỉ muốn có duy nhất một người có tên là Firrelli xuất hiện ở kết quả của câu truy vấn.
SELECT DISTINCT lastname FROM employees ORDER BY lastname;
Try In Out
2.MySQL DISTINCT với nhiều cột.
Bạn có thể sử dụng mệnh đề DISTINCT với nhiều hơn một cột. Trong trường hợp này, MySQL sử dụng sự kết hợp của tất cả các cột để xác định sự độc đáo của các hàng trong tập kết quả.
Ví dụ: Để có được sự kết hợp của city và state từ bảng customers, bạn sử dụng các truy vấn sau đây:
SELECT DISTINCT state, city FROM customers WHERE state IS NOT NULL ORDER BY state , city;
Try In Out
3. Mệnh đề DISTINCT với GROUP BY
Nếu bạn sử dụng mệnh đề GROUP BY trong câu lệnh SELECT mà không sử dụng hàm tập hợp, mệnh đề GROUP BY hoạt động như mệnh đề DISTINCT.
Ví du: Kết quả sau sử dụng mệnh đề GROUP BY để lựa chọn duy nhất state của customers trong bảng customers.
SELECT state FROM customers GROUP BY state;
Try In Out
Bạn cũng nhận được một kết quả tương tự bằng cách sử dụng mện đề DISTINCT
SELECT DISTINCT state FROM customers;
Try In Out
Tóm lại điều đó nói nên gì. Mệnh đề DISTINCT là một trường hợp đặc biệt của mện đề GROUP BY. Điểm khác nhau giữa DISTINCT và GROUP BY là thiết lập một kết quả được sắp xếp ngược lại DISTINCT thì không.
Nếu bạn thêm mệnh đề ORDER BY vào câu lệnh sử dụng mệnh đề DISTINCT thì nó cũng trả về một tập các kết quả được sắp xếp giông như kết quả trả về từ câu lệnh sử dụng mệnh đề GROUP BY.
SELECT DISTINCT state FROM customers ORDER BY state;
Try In Out
4. MySQL DISTINCT và một số hàm tổng hợp.
Bạn có thể sử dụng mệnh đề DISTINCT cùng với một số hàm tổng hợp. Nhằm loại bỏ các kết quả(hàng) bị trùng lặp trước khi MySQL áp dụng các hàm nên tập kết quả của câu lệnh.
Một số hàm tổng hợp trong MySQL.
- COUNT: Hàm COUNT được sử dụng để đếm các bản ghi trong tập kết quả trả về trong cậu lệnh SELECT.
- AVG: Hàm AVG được sử dụng để tính giá trị trung bình của một trường của các bản ghi trong tập kết quả.
- SUM. Hàm SUM được sử dụng để tính tổng của một trường trong các bản ghi.
Ví dụ:
SELECT COUNT(DISTINCT state) as totalState FROM customers WHERE country = 'USA';
Try In Out
5. MySQL DISTINCT với mệnh đề LIMIT.
Trong trường hợp bạn sử dụng mệnh đề DISTINCT với mện đề LIMIT, MySQL ngừng tìm kiếm ngay khi nó có được đẩy đủ các kết quả không trùng lặp được giới hạn trong mệnh đề LIMIT.
Ví dụ: Lấy 5 kết quả duy nhất đầu tiên không NULL của states trong bảng customers.
SELECT DISTINCT state FROM customers WHERE state IS NOT NULL LIMIT 5;
Try In Out
6. Tổng kết.
Trong bài viết này mình đã chỉ cho các cho bạn một số cách sử dụng mệnh đề DISTINCT trong MySQL để loại bỏ các hàng trùng lặp trong tập kết quả trả về từ câu lệnh truy vấn. Các bài viết tiếp mình sẽ nói rõ hơn về câu lệnh SELECT trong MySQL. Câu lệnh quan trọng và được sử dụng nhiều nhất của HQTCSDL này.