KHÁC BIỆT trong PostgreSQL: Chọn, Sắp xếp theo & Giới hạn (Ví dụ)

⚡ Tóm tắt thông minh

KHÁC BIỆT trong PostgreSQL Lệnh này được sử dụng với câu lệnh SELECT để loại bỏ các hàng trùng lặp và chỉ trả về các giá trị duy nhất. Nó bao gồm cú pháp SELECT, SQL Shell và pgAdmin, DISTINCT trên một cột và nhiều cột, và sự khác biệt giữa DISTINCT và GROUP BY.

  • 🔎 LỰA CHỌN: Truy xuất các cột từ một bảng bằng câu lệnh SELECT column FROM table.
  • 🧹 RIÊNG BIỆT: Xóa các hàng trùng lặp và giữ lại một hàng cho mỗi giá trị duy nhất.
  • ↕️ ĐẶT BỞI: Theo mặc định, sắp xếp tăng dần, hoặc giảm dần với tùy chọn DESC.
  • 🔢 GIỚI HẠN: Giới hạn số lượng bản ghi mà truy vấn trả về.
  • 🖥️ Công cụ: Chạy các truy vấn tương tự trong SQL Shell hoặc pgAdmin.

KHÁC BIỆT trong PostgreSQL

Bạn có thể truy xuất dữ liệu từ bảng bằng câu lệnh SELECT.

Cú pháp:

SELECT [column names] FROM [table_name]

Ở đây,

  • Tên cột: Tên của các cột mà bạn muốn lấy giá trị.
  • TỪ: Mệnh đề FROM xác định một hoặc nhiều bảng nguồn cho câu lệnh SELECT.
  • tên_bảng: Tên của một bảng hiện có mà bạn muốn truy vấn.

Từ "DISTINCT" ở đây có nghĩa là gì? PostgreSQL?

DISTINCT mệnh đề trong PostgreSQL Lệnh `SELECT DISTINCT` được sử dụng với câu lệnh `SELECT` để loại bỏ các hàng trùng lặp khỏi tập kết quả. Khi một cột chứa các giá trị lặp lại, `SELECT DISTINCT` chỉ trả về các giá trị duy nhất, giữ nguyên các giá trị trùng lặp.ping Mỗi nhóm mục trùng lặp sẽ có một hàng riêng. Điều này hữu ích khi bạn muốn có một danh sách các mục riêng biệt, chẳng hạn như thành phố của khách hàng hoặc danh mục sản phẩm duy nhất, mà không bị lặp lại.

Từ khóa DISTINCT đánh giá tất cả các cột được liệt kê trong câu lệnh SELECT để quyết định xem một hàng có duy nhất hay không. PostgreSQL Ngoài ra, hàm này còn cung cấp DISTINCT ON, trả về hàng đầu tiên cho mỗi giá trị khác nhau của một biểu thức được chỉ định. Bạn có thể kết hợp DISTINCT với ORDER BY để kiểm soát các hàng được hiển thị và với LIMIT để giới hạn số lượng kết quả.

PostgreSQL Chọn câu lệnh trong SQL Shell

Bước 1) Chúng ta có một bảng "tutorials" với 2 cột, "id" và "tutorial_name". Hãy truy vấn bảng này. Sử dụng truy vấn sau để liệt kê dữ liệu trong bảng:

SELECT id,tutorial_name FROM tutorials;

PostgreSQL Chọn câu lệnh trong SQL Shell

LƯU Ý: Sử dụng lệnh \c để kết nối với cơ sở dữ liệu chứa bảng bạn muốn truy vấn. Trong trường hợp này, chúng ta đang kết nối với cơ sở dữ liệu guru99.

Bước 2) Nếu bạn muốn xem tất cả các cột trong một bảng cụ thể, chúng ta có thể sử dụng ký tự đại diện dấu sao (*). Điều này có nghĩa là nó sẽ kiểm tra mọi khả năng và kết quả là sẽ trả về tất cả các cột.

SELECT * FROM tutorials;

PostgreSQL Chọn câu lệnh trong SQL Shell

Nó hiển thị tất cả các bản ghi của bảng hướng dẫn.

Bước 3) Bạn có thể sử dụng mệnh đề ORDER để sắp xếp dữ liệu trong bảng dựa trên một cột cụ thể. Mệnh đề ORDER sắp xếp dữ liệu theo thứ tự từ A đến Z.

SELECT * FROM tutorials ORDER BY id;

PostgreSQL Chọn câu lệnh trong SQL Shell

Bạn có thể sắp xếp từ Z đến A bằng cách sử dụng “DESC” sau câu lệnh “ORDER BY”.

SELECT * FROM tutorials ORDER BY id DESC;

PostgreSQL Chọn câu lệnh trong SQL Shell

Bước 4) Lệnh SELECT DISTINCT trong PostgreSQL mệnh đề có thể được sử dụng để loại bỏ các hàng trùng lặp khỏi kết quả. Nó giữ một hàng cho mỗi nhóm trùng lặp.

Syntax:
SELECT DISTINCT column_1 FROM table_name;

Hãy truy vấn Postgres bằng cách chọn các giá trị id khác nhau từ bảng hướng dẫn của chúng ta bằng cách sử dụng các truy vấn khác nhau. PostgreSQL:

SELECT DISTINCT(id) FROM tutorials;

PostgreSQL Chọn câu lệnh trong SQL Shell

Bước 5) Bạn có thể sử dụng PostgreSQL Mệnh đề LIMIT được sử dụng để giới hạn số lượng bản ghi được trả về bởi truy vấn SELECT.

SELECT * FROM tutorials LIMIT 4;

PostgreSQL Chọn câu lệnh trong SQL Shell

PostgreSQL Câu lệnh Select trong pgAdmin

Bước 1) Trong Cây Đối tượng:

  1. Nhấp chuột phải vào Bảng.
  2. Chọn kịch bản.
  3. Nhấp vào CHỌN KỊCH BẢN.

PostgreSQL Câu lệnh Select trong pgAdmin

Bước 2) Trong khung bên phải:

  1. Chỉnh sửa câu truy vấn SELECT nếu cần.
  2. Nhấp vào biểu tượng tia sét.
  3. Quan sát kết quả đầu ra.

PostgreSQL Câu lệnh Select trong pgAdmin

Phân biệt trên nhiều cột

Mệnh đề SELECT DISTINCT cũng có thể áp dụng cho nhiều hơn một cột. Khi bạn liệt kê nhiều cột sau DISTINCT, PostgreSQL Nó coi sự kết hợp của các cột đó như một đơn vị và loại bỏ các hàng mà toàn bộ sự kết hợp đó bị trùng lặp.

Syntax:
SELECT DISTINCT column_1, column_2 FROM table_name;

Ví dụ, để trả về các tổ hợp duy nhất của tutorial_name và id từ bảng tutorials:

SELECT DISTINCT tutorial_name, id FROM tutorials;

Trong trường hợp này, một hàng chỉ bị xóa khi cả tutorial_name và id đều trùng khớp với một hàng khác. Nếu hai hàng có cùng tutorial_name nhưng có giá trị id khác nhau, cả hai đều được giữ lại, vì sự kết hợp đó vẫn là duy nhất. Điều quan trọng cần nhớ là: DISTINCT không loại bỏ các cột trùng lặp khi nhiều cột được chọn; nó loại bỏ các cột trùng lặp trong toàn bộ tập hợp các cột đã chọn.

DISTINCT so với GROUP BY trong PostgreSQL

Cả hai mệnh đề DISTINCT và GROUP BY đều có thể loại bỏ các giá trị trùng lặp, nhưng chúng phục vụ các mục đích khác nhau:

  • DISTINCT Hàm này chỉ đơn giản trả về các hàng duy nhất từ ​​kết quả và là lựa chọn tốt nhất khi bạn chỉ cần một danh sách đã loại bỏ các hàng trùng lặp.
  • NHÓM THEO Nhóm các hàng có cùng giá trị để bạn có thể áp dụng các hàm tổng hợp như COUNT, SUM, hoặc AVG cho mỗi nhóm.

Ví dụ, cả hai truy vấn dưới đây đều trả về các giá trị ID duy nhất:

SELECT DISTINCT id FROM tutorials;
SELECT id FROM tutorials GROUP BY id;

Sử dụng DISTINCT cho danh sách các giá trị duy nhất đơn thuần, và sử dụng GROUP BY khi bạn cũng cần tính toán cho mỗi nhóm, chẳng hạn như đếm xem có bao nhiêu bài hướng dẫn có cùng ID. Đối với các truy vấn đơn giản, trình lập kế hoạch thường cho hiệu suất tương tự với cả hai, nhưng GROUP BY là bắt buộc bất cứ khi nào có liên quan đến việc tổng hợp dữ liệu.

Cheat Sheet

SELECT [column names] FROM [table_name] [clause]

Dưới đây là các thông số khác nhau:

  • Tên cột: Tên của các cột mà bạn muốn lấy giá trị.
  • TỪ: Mệnh đề FROM xác định một hoặc nhiều bảng nguồn cho câu lệnh SELECT.
  • tên_bảng: Tên của một bảng hiện có mà bạn muốn truy vấn.

Các điều khoản khác nhau là:

Lệnh Mô tả Chi tiết
* Truy xuất bản ghi cho tất cả các hàng trong bảng.
DISTINCT KHÁC BIỆT trong PostgreSQL Giúp bạn loại bỏ các kết quả trùng lặp.
ĐẶT BỞI Sắp xếp các hàng dựa trên một cột. Thứ tự sắp xếp mặc định là tăng dần. Sử dụng từ khóa DESC để sắp xếp giảm dần.
LIMIT GIỚI HẠN trong PostgreSQL hạn chế số lượng bản ghi được truy vấn trả về.

Câu Hỏi Thường Gặp

Đúng vậy. Trợ lý AI có thể chuyển đổi mô tả thành các câu lệnh SELECT DISTINCT, thêm ORDER BY hoặc LIMIT và giải thích kết quả. Tuy nhiên, bạn vẫn nên kiểm tra truy vấn trên lược đồ của mình trước khi chạy nó trong môi trường sản xuất.

Đúng vậy. Các công cụ AI có thể đọc kế hoạch truy vấn từ EXPLAIN ANALYZE và đề xuất lập chỉ mục hoặc viết lại mệnh đề DISTINCT thành GROUP BY. Luôn luôn xác thực các đề xuất bằng dữ liệu thực tế, vì hiệu suất phụ thuộc vào kích thước bảng và chỉ mục.

DISTINCT loại bỏ các hàng trùng lặp trên tất cả các cột đã chọn. DISTINCT ON (biểu thức) giữ lại hàng đầu tiên cho mỗi giá trị khác nhau của biểu thức đó, cho phép bạn chọn một hàng cho mỗi nhóm, thường được kết hợp với ORDER BY.

Phương thức DISTINCT có thể chậm hơn trên các bảng lớn vì nó phải so sánh và loại bỏ các bản ghi trùng lặp, thường sử dụng thuật toán sắp xếp hoặc băm. Việc sử dụng chỉ mục phù hợp và giới hạn số cột được chọn sẽ giúp giảm chi phí thực hiện.

Tóm tắt bài viết này với: