Khi truy vấn dữ liệu từ table, bạn có thể nhận được những giá trị trùng lắp, và để loại bỏ những giá trị này, chúng ta sẽ sử dụng từ khóaDISTINCT trong câu lệnh SELECT. Cú pháp sử dụng DISTINCT như sau :
SELECT DISTINCT columns
FROM table_name
WHERE where_conditions
Để các bạn dễ hiểu, chúng ta sẽ làm một ví dụ như sau : Giả sử chúng ta cần lấy giá trị lastname từ một table employees . Đầu tiên chúng ta sẽ sử dụng câu lệnh SELECT thông thường :
SELECT lastname
FROM employees
ORDER BY lastname
Và kết quả sẽ hiển thị như sau :
Theo kết quả bên trên, chúng ta nhận được những giá trị trùng lắp như : Bondur, Firrelli.., Và để loại bỏ sự trùng lắp này chúng ta sẽ sử dụng từ khóa DISTINCT
SELECT DISTINCT lastname
FROM employees
ORDER BY lastname
Các bạn thấy đó, bây giờ các giá trị lastname đã không còn giá trị nào trùng lắp nữa.
MySQL DISTINCT và giá trị NULL
Nếu một cột trong table có giá trị NULL thì khi bạn sử dụng DISTINCT , giá trị trả về cũng tính luôn cả cột này. Ví dụ như nếu chúng ta truy vấn table customers , mà trong table này có nhiều cột có giá trị NULL, và khi chúng ta truy vấn sẽ nhận được kết quả như sau :
SELECT DISTINCT state
FROM customers
Ngoài ra các bạn cũng có thể sử dụng toán tử DISTINCT với nhiều hơn một cột.
SELECT DISTINCT state, city
FROM customers
WHERE state IS NOT NULL
ORDER BY state, city
nếu không sử dụng DISTINCT thì chúng ta sẽ nhận được những giá trị trùng lắp như sau :
SELECT state, city
FROM customers
WHERE state IS NOT NULL
ORDER BY state, city
Có lẽ đến lúc này thì các bạn đã có thể hiểu và biết cách sử dụng DISTINCT để lấy các giá trị duy nhất trong table. Ngoài ra các bạn cũng có thể sử dụng hàm COUNT để đếm số lượng các giá trị duy nhất này.
SELECT COUNT(DISTINCT state)
FROM customers
WHERE country = 'USA';
Mình mong là qua bài viết ngắn ngủi này, các bạn sẽ có thêm một kinh nghiệm trong việc truy vấn dữ liệu.