ALL, DISTINCT, DISTINCTROW, TOP Predicates
Applies ToAccess cho Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Xác định bản ghi được chọn bằng truy vấn SQL.

Cú pháp

CHỌN [TẤT CẢ | RIÊNG BIỆT | DISTINCTROW | [TOP n [PERCENT]]]Bảng FROM

Câu lệnh SELECT chứa các vị từ này có các phần sau đây:

Phần

Mô tả

ALL

Giả định nếu bạn không bao gồm một trong các vị từ. Bộ máy cơ sở dữ liệu Microsoft Access sẽ chọn tất cả các bản ghi đáp ứng các điều kiện trong câu lệnh SQL. Hai ví dụ sau đây tương đương nhau và trả về tất cả các bản ghi từ bảng Nhân viên:

SELECT ALL *FROM EmployeesORDER BY EmployeeID;
SELECT *FROM EmployeesORDER BY EmployeeID;

DISTINCT

Bỏ qua các bản ghi có chứa dữ liệu trùng lặp trong các trường đã chọn. Để được đưa vào kết quả truy vấn, giá trị của mỗi trường được liệt kê trong câu lệnh SELECT phải là duy nhất. Ví dụ: một số nhân viên được liệt kê trong bảng Nhân viên có thể có cùng họ. Nếu hai bản ghi chứa Smith trong trường LastName, câu lệnh SQL sau đây chỉ trả về một bản ghi có chứa Smith:

SELECT DISTINCT LastNameFROM Employees;

Nếu bạn bỏ qua DISTINCT, truy vấn này trả về cả hai bản ghi Smith.

Nếu mệnh đề SELECT có chứa nhiều trường thì tổ hợp giá trị từ tất cả các trường phải là duy nhất để bản ghi cho trước được đưa vào kết quả.

Đầu ra của truy vấn sử dụng DISTINCT không thể cập nhật được và không phản ánh các thay đổi tiếp theo do người dùng khác thực hiện.

DISTINCTROW

Bỏ qua dữ liệu dựa trên toàn bộ bản ghi trùng lặp, chứ không chỉ các trường trùng lặp. Ví dụ: bạn có thể tạo một truy vấn kết hợp các bảng Khách hàng và Đơn hàng trên trường ID_Khách_hàng. Bảng Khách hàng không chứa trường CustomerID trùng lặp nào, nhưng bảng Đơn hàng vì mỗi khách hàng có thể có nhiều đơn hàng. Câu lệnh SQL sau đây cho thấy cách bạn có thể sử dụng DISTINCTROW để tạo danh sách các công ty có ít nhất một đơn hàng nhưng không có bất kỳ chi tiết nào về các đơn hàng đó:

SELECT DISTINCTROW CompanyNameFROM Customers INNER JOIN OrdersON Customers.CustomerID = Orders.CustomerIDORDER BY CompanyName;

Nếu bạn bỏ qua DISTINCTROW, truy vấn này sẽ tạo ra nhiều hàng cho mỗi công ty có nhiều đơn hàng.

DISTINCTROW có hiệu ứng chỉ khi bạn chọn các trường từ một số, nhưng không phải tất cả, trong số các bảng được sử dụng trong truy vấn. DISTINCTROW được bỏ qua nếu truy vấn của bạn chỉ bao gồm một bảng hoặc nếu bạn xuất các trường từ tất cả các bảng.

TOP n [PERCENT]

Trả về một số bản ghi nhất định nằm ở trên cùng hoặc dưới cùng của một phạm vi được xác định bởi mệnh đề ORDER BY. Giả sử bạn muốn tên của 25 học sinh hàng đầu từ lớp năm 1994:

SELECT TOP 25FirstName, LastNameFROM StudentsWHERE GraduationYear = 2003ORDER BY GradePointAverage DESC;

Nếu bạn không bao gồm mệnh đề ORDER BY, truy vấn sẽ trả về một tập hợp 25 bản ghi tùy ý từ bảng Học viên thỏa mãn mệnh đề WHERE.

Vị từ TOP không chọn giữa các giá trị bằng nhau. Trong ví dụ trên đây, nếu điểm trung bình của lớp 25 và 26 cao nhất là như nhau, truy vấn sẽ trả về 26 bản ghi.

Bạn cũng có thể sử dụng từ dành riêng PERCENT để trả về một tỷ lệ phần trăm bản ghi nhất định nằm ở đầu hoặc cuối phạm vi được xác định bởi mệnh đề ORDER BY. Giả sử thay vì 25 học viên hàng đầu, bạn muốn có 10% lớp học dưới cùng:

SELECT TOP 10 PERCENTFirstName, LastNameFROM StudentsWHERE GraduationYear = 2003ORDER BY GradePointAverage ASC;

Xác định ASC xác định sự trả về của các giá trị dưới cùng. Giá trị sau TOP phải là Một Số nguyên chưa được ký.

Top không ảnh hưởng đến việc truy vấn có thể cập nhật hay không.

table

Tên của bảng mà các bản ghi được truy xuất từ đó.

Bạn cần thêm trợ giúp?

Bạn muốn xem các tùy chọn khác?

Khám phá các lợi ích của gói đăng ký, xem qua các khóa đào tạo, tìm hiểu cách bảo mật thiết bị của bạn và hơn thế nữa.

Cộng đồng giúp bạn đặt và trả lời các câu hỏi, cung cấp phản hồi và lắng nghe ý kiến từ các chuyên gia có kiến thức phong phú.