Giá trị của n thay đổi tùy theo yêu cầu; . Chúng ta sẽ tìm hiểu cách chọn N hàng trên cùng bằng cách sử dụng mệnh đề LIMIT trong cơ sở dữ liệu MySQL
Bạn có thể hưởng lợi từ những truy vấn này bằng cách sử dụng chúng trong phân trang, tìm các giao dịch mua hoặc giao dịch gần đây. Cũng cần lưu ý rằng mỗi cơ sở dữ liệu có một cú pháp khác nhau để thực hiện chức năng này
SQL Server sử dụng SELECT TOP, MySQL sử dụng LIMIT và Oracle sử dụng ROWNUM và SELECT * FROM customer ORDER BY customer_age ASC LIMIT 3; 0
Chọn N hàng trên cùng trong MySQL bằng mệnh đề LIMIT
Sử dụng truy vấn Top N có nghĩa là bạn muốn giới hạn kết quả ở một số hàng nhất định. Chúng được sử dụng để lấy các hàng tốt nhất hoặc gần đây nhất từ một tập hợp kết quả
Đối với hướng dẫn này, chúng tôi đang sử dụng bảng có tên SELECT * FROM customer ORDER BY customer_age ASC LIMIT 3; 2 có SELECT * FROM customer ORDER BY customer_age ASC LIMIT 3; 3, SELECT * FROM customer ORDER BY customer_age ASC LIMIT 3; 4, SELECT * FROM customer ORDER BY customer_age ASC LIMIT 3; 5 và SELECT * FROM customer ORDER BY customer_age ASC LIMIT 3; 6. Chúng tôi đã điền vào bảng SELECT * FROM customer ORDER BY customer_age ASC LIMIT 3; 2 này một số dữ liệu trông như sau vào lúc này
Chúng ta sẽ sử dụng bảng SELECT * FROM customer ORDER BY customer_age ASC LIMIT 3; 2 để thực hành LIMIT trong MySQL. Chúng tôi muốn chọn 3 bản ghi HÀNG ĐẦU từ bảng SELECT * FROM customer ORDER BY customer_age ASC LIMIT 3; 2
Mã ví dụ
SELECT * FROM customer LIMIT 3;
đầu ra
Chúng tôi muốn có được ba khách hàng trẻ nhất và phân tích chúng cho mục đích dự báo. Bạn có thể xem mẫu mã sau
Mã ví dụ
SELECT * FROM customer ORDER BY customer_age ASC LIMIT 3;
Đầu tiên, dữ liệu bảng sẽ được sắp xếp theo thứ tự đối với SELECT * FROM customer ORDER BY customer_age ASC LIMIT 3; 6. Người trẻ nhất là SELECT * FROM customer ORDER BY customer_age ASC LIMIT 3; 2 sẽ ở trên cùng và người lớn hơn sẽ ở dưới cùng
Sau đó chọn 3 hàng trên cùng từ tập kết quả của dữ liệu được sắp xếp. Xem ảnh chụp màn hình sau
đầu ra
Nếu bạn muốn chọn 4 hàng trên cùng bắt đầu từ offset SELECT * FROM you_table_name ORDER BY column_name ASC LIMIT offset,row_count; 3 thì sao?
SELECT * FROM you_table_name ORDER BY column_name ASC LIMIT offset,row_count;
Luôn nhớ rằng phần bù cho hàng đầu tiên trong mệnh đề LIMIT bắt đầu từ SELECT * FROM you_table_name ORDER BY column_name ASC LIMIT offset,row_count; 5. Đây là mã mẫu cho kịch bản này
Mã ví dụ
SELECT * FROM customer ORDER BY customer_age ASC LIMIT 3,4;
đầu ra
Ngoài ra, chúng ta cũng có thể sử dụng mệnh đề LIMIT với số hàng và phần bù theo cách sau
# You can also write the above query in this way SELECT * FROM person.customer ORDER BY customer_age ASC LIMIT 1 OFFSET 4;
đầu ra
Bạn cũng có thể sắp xếp bảng của mình theo thứ tự giảm dần bằng cách thay thế SELECT * FROM you_table_name ORDER BY column_name ASC LIMIT offset,row_count; 7 bằng SELECT * FROM you_table_name ORDER BY column_name ASC LIMIT offset,row_count; 8 trong truy vấn
Phần kết luận
Chúng tôi đã kết luận rằng chúng tôi có thể giới hạn số lượng hàng từ tập hợp kết quả tùy thuộc vào yêu cầu của dự án
Chúng ta có thể chọn n số hàng trên cùng hoặc n số hàng trên cùng bắt đầu từ m. Chúng tôi cũng biết rằng mệnh đề LIMIT có thể được sử dụng cùng với/không kèm theo SELECT * FROM customer ORDER BY customer_age ASC LIMIT 3,4; 0
Trong một số trường hợp, bạn có thể không quan tâm đến tất cả các hàng được truy vấn trả về, ví dụ: nếu bạn chỉ muốn truy xuất 10 nhân viên hàng đầu mới gia nhập tổ chức, lấy 3 sinh viên hàng đầu theo điểm số hoặc đại loại như vậy
Để xử lý những tình huống như vậy, bạn có thể sử dụng mệnh đề TOP của SQL trong câu lệnh -- Syntax for SQL Server Database SELECT TOP 3 * FROM employees ORDER BY salary DESC;0 của mình. Tuy nhiên, mệnh đề TOP chỉ được hỗ trợ bởi hệ thống cơ sở dữ liệu SQL Server và MS Access
MySQL cung cấp mệnh đề -- Syntax for SQL Server Database SELECT TOP 3 * FROM employees ORDER BY salary DESC;2 tương đương, trong khi Oracle cung cấp mệnh đề -- Syntax for SQL Server Database SELECT TOP 3 * FROM employees ORDER BY salary DESC;3 cho câu lệnh -- Syntax for SQL Server Database SELECT TOP 3 * FROM employees ORDER BY salary DESC;0 để hạn chế số lượng hàng được trả về bởi một truy vấn
SQL HÀNG ĐẦU Cú pháp
Mệnh đề SQL TOP được sử dụng để giới hạn số hàng được trả về. Cú pháp cơ bản của nó là
CHỌN HÀNG ĐẦU -- Syntax for SQL Server Database SELECT TOP 3 * FROM employees ORDER BY salary DESC;6. -- Syntax for SQL Server Database SELECT TOP 3 * FROM employees ORDER BY salary DESC;7 -- Syntax for SQL Server Database SELECT TOP 3 * FROM employees ORDER BY salary DESC;8 TỪ -- Syntax for SQL Server Database SELECT TOP 3 * FROM employees ORDER BY salary DESC;9;
Ở đây, column_list là danh sách các tên cột hoặc trường được phân tách bằng dấu phẩy của một bảng cơ sở dữ liệu (e. g. tên, tuổi, quốc gia, v.v. ) có giá trị bạn muốn tìm nạp. Hãy xem nó hoạt động như thế nào
Giả sử chúng tôi có một bảng nhân viên trong cơ sở dữ liệu của mình với các bản ghi sau
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 5000 | 4 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 5 | Martin Blank | 2008-06-24 | 5600 | NULL | +--------+--------------+------------+--------+---------+Câu lệnh sau đây trả về ba nhân viên được trả lương cao nhất từ bảng nhân viên
-- Syntax for SQL Server Database SELECT TOP 3 * FROM employees ORDER BY salary DESC;
Tập kết quả trả về sẽ giống như thế này
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | +--------+--------------+------------+--------+---------+Bạn có thể tùy ý sử dụng từ khóa +--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | +--------+--------------+------------+--------+---------+ 0 sau giá trị cố định trong mệnh đề TOP, nếu bạn chỉ muốn truy xuất phần trăm số hàng thay vì số lượng hàng cố định. Các giá trị phân số được làm tròn lên đến giá trị số nguyên tiếp theo (e. g. 1. 5 làm tròn thành 2)
Câu lệnh sau trả về top 30% nhân viên được trả lương cao nhất
-- Syntax for SQL Server Database SELECT TOP 30 PERCENT * FROM employees ORDER BY salary DESC;
Tập kết quả được trả về bởi truy vấn trên sẽ như thế này
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | +--------+--------------+------------+--------+---------+Cú pháp GIỚI HẠN MySQL
Mệnh đề -- Syntax for SQL Server Database SELECT TOP 3 * FROM employees ORDER BY salary DESC;2 của MySQL thực hiện công việc tương tự như mệnh đề TOP của SQL. Cú pháp cơ bản của nó là
CHỌN -- Syntax for SQL Server Database SELECT TOP 3 * FROM employees ORDER BY salary DESC;8 TỪ -- Syntax for SQL Server Database SELECT TOP 3 * FROM employees ORDER BY salary DESC;9 SỐ GIỚI HẠN;
Câu lệnh sau đây trả về ba nhân viên được trả lương cao nhất từ bảng nhân viên
-- Syntax for MySQL Database SELECT * FROM employees ORDER BY salary DESC LIMIT 3;
Sau khi thực hiện, bạn sẽ nhận được kết quả như thế này
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | +--------+--------------+------------+--------+---------+Ghi chú. Trong câu lệnh -- Syntax for SQL Server Database SELECT TOP 3 * FROM employees ORDER BY salary DESC;0, luôn sử dụng mệnh đề +--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | +--------+--------------+------------+--------+---------+ 7 với mệnh đề -- Syntax for SQL Server Database SELECT TOP 3 * FROM employees ORDER BY salary DESC;2. Nếu không, bạn có thể không nhận được kết quả mong muốn
Đặt Row Offset trong LIMIT khoản
Mệnh đề -- Syntax for SQL Server Database SELECT TOP 3 * FROM employees ORDER BY salary DESC;2 chấp nhận tham số thứ hai tùy chọn
Khi hai tham số được chỉ định, tham số đầu tiên chỉ định phần bù của hàng đầu tiên để trả về i. e. điểm bắt đầu, trong khi tham số thứ hai chỉ định số hàng tối đa sẽ trả về. Phần bù của hàng ban đầu là -- Syntax for SQL Server Database SELECT TOP 30 PERCENT * FROM employees ORDER BY salary DESC;0 (không phải -- Syntax for SQL Server Database SELECT TOP 30 PERCENT * FROM employees ORDER BY salary DESC;1)