Tìm hiểu về lệnh SELECT DISTINCT trong SQL

974
22-10-2024
Tìm hiểu về lệnh SELECT DISTINCT trong SQL

SELECT DISTINCT là một lệnh cơ bản nhưng vô cùng hữu ích để loại bỏ các bản ghi trùng lặp trong bảng dữ liệu. Bài viết này của Bizfly Cloud sẽ hướng dẫn bạn cách sử dụng và những ứng dụng thực tế của lệnh SELECT DISTINCT trong SQL.

Chức năng của lệnh SELECT DISTINCT trong SQL

Loại bỏ bản ghi trùng lặp 

Khi sử dụng DISTINCT, SQL sẽ quét qua các bản ghi và chỉ trả về những giá trị khác nhau. Nếu một cột chứa nhiều giá trị giống nhau, chỉ một giá trị duy nhất sẽ được hiển thị trong kết quả.

Sử dụng với nhiều cột

Lệnh SELECT DISTINCT có thể áp dụng cho nhiều cột cùng một lúc. Khi đó, SQL sẽ trả về các kết hợp duy nhất của các giá trị trong các cột đã chỉ định.

Cú pháp

Cú pháp cơ bản của lệnh này là:

SELECT DISTINCT column1, column2, ...

FROM table_name;

Trong đó, column1, column2, ... là các cột mà bạn muốn truy vấn và table_name là tên bảng chứa dữ liệu.

Xử lý giá trị NULL

Nếu cột truy vấn chứa giá trị NULL, lệnh DISTINCT sẽ chỉ trả về một giá trị NULL duy nhất, coi tất cả các giá trị NULL là giống nhau.

Cú pháp của lệnh SELECT DISTINCT

Cú pháp của lệnh SELECT DISTINCT khá đơn giản và dễ hiểu. Bạn chỉ cần nắm vững cấu trúc cơ bản để có thể áp dụng vào các truy vấn của mình.

Cấu trúc cơ bản

Cú pháp của lệnh SELECT DISTINCT như sau:

SELECT DISTINCT column1, column2, ... FROM table_name WHERE condition;

Trong đó:

  • column1, column2, ... là các cột mà bạn muốn lấy giá trị duy nhất.
  • table_name là tên của bảng dữ liệu.
  • condition là điều kiện lọc dữ liệu (nếu cần).
  • SELECT DISTINCT: Từ khóa chỉ định việc bạn muốn truy vấn các giá trị duy nhất.
  • column1, column2, ...: Là các cột mà bạn muốn lấy giá trị duy nhất.
  • table_name: Tên của bảng chứa dữ liệu bạn muốn truy vấn.
  • WHERE condition: (Tùy chọn): Điều kiện lọc dữ liệu để xác định dữ liệu nào sẽ được hiển thị.

Cú pháp

Để minh họa rõ hơn về cú pháp, ví dụ sau đây sẽ thể hiện rõ nhất cú pháp của lệnh: Giả sử bạn có một bảng KHACH_HANG với các cột như MA_KH, TEN, SODIENTHOAI. Nếu bạn muốn lấy danh sách số điện thoại khách hàng khác nhau, bạn có thể viết câu lệnh như sau:

SELECT DISTINCT SODIENTHOAI FROM KHACH_HANG;

Câu lệnh này sẽ trả về danh sách số điện thoại duy nhất mà không có bất kỳ bản sao nào.

Cách sử dụng lệnh SELECT DISTINCT trong SQL

Cách sử dụng lệnh SELECT DISTINCT trong SQL

Một số ví dụ về lệnh SELECT DISTINCT trong SQL

Để giúp bạn hiểu rõ hơn về cách sử dụng SELECT DISTINCT, chúng ta sẽ xem xét một số ví dụ cụ thể.

Ví dụ 1: Lấy giá trị duy nhất từ một cột

Bạn có một bảng danh sách khách hàng với các cột customer_id, customer_name, và địa chỉ. Để lấy danh sách các thành phố duy nhất mà khách hàng đến từ, bạn có thể sử dụng câu lệnh sau:

SELECT DISTINCT city

FROM customers;

Ví dụ 2: Lấy giá trị duy nhất từ nhiều cột

Nếu bạn muốn lấy danh sách các cặp giá trị duy nhất từ hai cột, chẳng hạn như city và customer_name, bạn có thể làm như sau:

SELECT DISTINCT city, customer_name

FROM customers;

Ví dụ 3: Kết hợp với điều kiện WHERE

Bạn cũng có thể kết hợp SELECT DISTINCT với điều kiện WHERE để lọc kết quả. Ví dụ: Nếu bạn chỉ muốn lấy các thành phố duy nhất từ bảng customers mà có khách hàng có tên bắt đầu bằng chữ 'A', bạn có thể viết:

SELECT DISTINCT city

FROM customers

WHERE customer_name LIKE 'A%';

Trường hợp sử dụng lệnh SELECT không có DISTINCT

Mặc dù SELECT DISTINCT rất hữu ích, nhưng có những trường hợp mà bạn không cần sử dụng nó. Thay vào đó, bạn có thể sử dụng lệnh SELECT thông thường để lấy dữ liệu.

Tổng hợp dữ liệu

Một trong những trường hợp điển hình mà bạn không cần sử dụng SELECT DISTINCT là khi bạn muốn tổng hợp dữ liệu.

Nếu bạn đang sử dụng các hàm như SUM(), AVG(), COUNT(), bạn có thể không cần DISTINCT vì các hàm này tự động xử lý dữ liệu theo cách riêng của chúng. Ví dụ:

SELECT COUNT(*) FROM ten_bang;

Khi cần tất cả dữ liệu

Nếu bạn cần tất cả các bản ghi mà không cần loại bỏ bản sao, bạn có thể sử dụng lệnh SELECT thông thường. Khi bạn muốn xem tất cả các bản ghi trong một bảng mà không cần loại bỏ các bản ghi trùng lặp. Ví dụ:

SELECT * FROM ten_bang;

Phân tích dữ liệu chi tiết

Trong một số trường hợp, bạn có thể muốn phân tích dữ liệu chi tiết hơn mà không cần loại bỏ các bản sao. Ví dụ, nếu bạn muốn xem tất cả các hóa đơn của từng khách hàng, bạn có thể sử dụng lệnh sau:

SELECT MA_KH, MA_HD, TONG_TIEN FROM HOADON ORDER BY MA_KH;

Câu lệnh này sẽ trả về tất cả các hóa đơn của từng khách hàng mà không loại bỏ bất kỳ bản sao nào.

Khi không có bản ghi trùng lặp

Nếu bạn biết chắc rằng bảng không chứa các bản ghi trùng lặp, việc sử dụng DISTINCT là không cần thiết và có thể làm giảm hiệu suất của truy vấn.

Kết luận

Lệnh SELECT DISTINCT là một công cụ hữu ích để truy vấn các giá trị duy nhất trong SQL. Nó giúp loại bỏ sự trùng lặp và cung cấp cho bạn một danh sách các giá trị rõ ràng và đơn giản. Hiểu rõ cách sử dụng SELECT DISTINCT sẽ giúp bạn khai thác hiệu quả cơ sở dữ liệu và thu thập thông tin chính xác, hữu ích cho các mục đích phân tích và ra quyết định.

SHARE