PostgreSQL - Từ khóa DISTINCT: Hướng dẫn cho người mới bắt đầu

Xin chào các bạn tương lai của các phù thủy cơ sở dữ liệu! Hôm nay, chúng ta sẽ cùng lặn vào thế giới kỳ diệu của PostgreSQL và khám phá một từ khóa nhỏ nhưng kỳ diệu叫做 DISTINCT. Đừng lo lắng nếu bạn chưa bao giờ viết một dòng mã trước đây - tôi sẽ là người hướng dẫn thân thiện của bạn trong hành trình này, và khi kết thúc, bạn sẽ sử dụng DISTINCT như một chuyên gia!

PostgreSQL - Distinct Keyword

DISTINCT là gì và chúng ta cần nó để làm gì?

Hãy tưởng tượng bạn là một thư viện trưởng (hãy ở lại với tôi ở đây) trong một thư viện khổng lồ.Boss của bạn yêu cầu bạn đếm số lượng tác giả khác nhau trong thư viện. Bạn wouldn't muốn đếm cùng một tác giả nhiều lần chỉ vì họ đã viết nhiều sách, phải không? Đó là nơi mà DISTINCT trở nên hữu ích trong thế giới cơ sở dữ liệu.

Từ khóa DISTINCT trong PostgreSQL được sử dụng để loại bỏ các hàng trùng lặp khỏi tập kết quả. Nó giống như có một bộ lọc kỳ diệu chỉ hiển thị các giá trị duy nhất. Thật tuyệt vời phải không?

Cú pháp: Cách sử dụng DISTINCT

Hãy bắt đầu với cú pháp cơ bản của DISTINCT. Đừng lo lắng; nó đơn giản hơn bạn nghĩ!

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

Dưới đây là ý nghĩa của từng phần:

  • SELECT: Điều này cho PostgreSQL biết rằng chúng ta muốn truy xuất dữ liệu.
  • DISTINCT: Ngôi sao của chúng ta! Nó loại bỏ các trùng lặp khỏi kết quả.
  • column1, column2, ...: Các cột bạn muốn chọn.
  • FROM table_name: Bảng bạn đang chọn từ.

Ví dụ: DISTINCT trong hành động

Ví dụ 1: Sử dụngDISTINCT cơ bản

Giả sử chúng ta có một bảng叫做 books với các cột title, author, và genre. Chúng ta muốn biết tất cả các thể loại duy nhất trong thư viện của chúng ta.

SELECT DISTINCT genre
FROM books;

Truy vấn này sẽ cung cấp cho chúng ta một danh sách tất cả các thể loại duy nhất, không quan trọng có bao nhiêu sách trong mỗi thể loại. Nếu chúng ta có 1000 sách nhưng chỉ có 5 thể loại khác nhau, chúng ta sẽ chỉ thấy 5 thể loại được liệt kê một lần mỗi thể loại.

Ví dụ 2: DISTINCT với nhiều cột

Bây giờ, nếu chúng ta muốn xem tất cả các kết hợp duy nhất của tác giả-thể loại? Chúng ta có thể sử dụng DISTINCT với nhiều cột:

SELECT DISTINCT author, genre
FROM books;

Điều này sẽ hiển thị cho chúng ta mỗi kết hợp duy nhất của tác giả và thể loại. Nếu một tác giả viết trong nhiều thể loại, họ sẽ xuất hiện nhiều lần, nhưng chỉ một lần cho mỗi thể loại họ viết.

Ví dụ 3: DISTINCT với ORDER BY

Hãy làm cho mọi thứ thú vị hơn một chút. Chúng ta có thể kết hợp DISTINCT với ORDER BY để sắp xếp kết quả của chúng ta:

SELECT DISTINCT genre
FROM books
ORDER BY genre ASC;

Truy vấn này sẽ cung cấp cho chúng ta tất cả các thể loại duy nhất, được sắp xếp theo bảng chữ cái. Nó giống như tổ chức kệ sách của thư viện!

Ví dụ 4: COUNT với DISTINCT

Đây là một mẹo hay: chúng ta có thể sử dụng COUNT với DISTINCT để đếm các giá trị duy nhất:

SELECT COUNT(DISTINCT author) AS unique_authors
FROM books;

Điều này sẽ cho chúng ta biết chúng ta có bao nhiêu tác giả khác nhau trong thư viện. Nó giống như hỏi, "Tôi cần bao nhiêu chữ ký của tác giả để thu thập một chữ ký từ mỗi tác giả trong thư viện?"

Các phương pháp phổ biến sử dụng DISTINCT

Dưới đây là bảng tóm tắt một số phương pháp phổ biến sử dụng DISTINCT:

Phương pháp Mô tả Ví dụ
Basic DISTINCT Loại bỏ các trùng lặp từ một cột duy nhất SELECT DISTINCT genre FROM books;
Multi-column DISTINCT Loại bỏ các trùng lặp dựa trên nhiều cột SELECT DISTINCT author, genre FROM books;
DISTINCT với ORDER BY Loại bỏ các trùng lặp và sắp xếp kết quả SELECT DISTINCT genre FROM books ORDER BY genre;
COUNT với DISTINCT Đếm các giá trị duy nhất SELECT COUNT(DISTINCT author) FROM books;
DISTINCT ON Giữ lại hàng đầu tiên của mỗi nhóm trùng lặp SELECT DISTINCT ON (genre) genre, title FROM books ORDER BY genre, title;

Lời khuyên và mẹo thực tế

  1. Xuất sắc xem xét: Mặc dù DISTINCT rất hữu ích, nó có thể làm chậm các truy vấn của bạn trên các bộ dữ liệu lớn. Sử dụng nó một cách khôn ngoan!

  2. Giá trị NULL: DISTINCT coi NULL là một giá trị duy nhất. Vậy nếu bạn có nhiều giá trị NULL trong một cột, DISTINCT sẽ giữ lại một trong số chúng.

  3. Kết hợp với WHERE: Bạn có thể sử dụng DISTINCT cùng với các mệnh đề WHERE. Ví dụ:

    SELECT DISTINCT genre
    FROM books
    WHERE author = 'J.K. Rowling';

    Điều này sẽ hiển thị tất cả các thể loại duy nhất mà J.K. Rowling đã viết.

  4. DISTINCT vs. GROUP BY: Đôi khi, bạn có thể đạt được cùng kết quả bằng cách sử dụng DISTINCT hoặc GROUP BY. Trong các trường hợp đơn giản, DISTINCT thường dễ hiểu hơn.

Kết luận: Sức mạnh của DISTINCT

Và thế là bạn đã mở khóa sức mạnh của DISTINCT trong PostgreSQL. Từ việc loại bỏ các trùng lặp đến việc đếm các giá trị duy nhất, DISTINCT giống như một cây kéo đa năng trong bộ công cụ SQL của bạn.

Nhớ rằng, chìa khóa để thành thạo DISTINCT (và SQL nói chung) là thực hành. Thử tạo các bảng của riêng bạn và thử nghiệm với các truy vấn DISTINCT khác nhau. Trước khi bạn biết điều đó, bạn sẽ phân biệt dữ liệu như một thám tử cơ sở dữ liệu!

Tiếp tục truy vấn, tiếp tục học hỏi, và quan trọng nhất, hãy vui vẻ với nó. Cuối cùng, mọi hành trình cơ sở dữ liệu xuất sắc đều bắt đầu với một câu lệnh SELECT. Chúc các bạn may mắn trong việc mã hóa!

Credits: Image by storyset