How to Select the Top N Rows in MySQL
Selecting the top N rows from a table is a fundamental task when working with databases. In this tutorial, we’ll explore how to accomplish this in MySQL with practical examples.
Using the LIMIT
Clause
The LIMIT
clause in MySQL is a straightforward way to specify the number of rows to return from a query result set.
Example: Select the Top 5 Rows
Suppose you have a table named employees
with the following schema:
CREATE TABLE employees (
id INT,
name VARCHAR(100),
salary DECIMAL(10, 2)
);
You want to select the top 5 employees based on salary in descending order.
SELECT id, name, salary
FROM employees
ORDER BY salary DESC
LIMIT 5;
Why it Works:
-
ORDER BY salary DESC
sorts the rows from highest to lowest salary. -
LIMIT 5
restricts the output to the first 5 rows after sorting.
Expected Output:
+----+----------+--------+
| id | name | salary |
+----+----------+--------+
| 3 | Alice | 90000 |
| 5 | Bob | 85000 |
| 2 | Charlie | 75000 |
| 6 | Diana | 70000 |
| 4 | Edward | 68000 |
+----+----------+--------+
Handling Tie Scores with LIMIT
When scores are tied, simply using LIMIT
may not provide consistent results without additional handling of tie conditions. ORDER BY
more columns to break ties.
Example: Handling Ties by Adding a Secondary Sort
To handle tied salaries, sort by the employee’s id
as a secondary sort criterion:
SELECT id, name, salary
FROM employees
ORDER BY salary DESC, id ASC
LIMIT 5;
Why it Works:
- Adding
id ASC
ensures that when salaries are tied, employees with a lowerid
are chosen consistently.
Using LIMIT
with Pagination
Beyond just selecting the top N rows, often we need to paginate results by selecting a specific range of rows.
Example: Select the Next 5 Rows
To paginate results and select rows 6-10 based on salary:
SELECT id, name, salary
FROM employees
ORDER BY salary DESC
LIMIT 5 OFFSET 5;
Why it Works:
-
LIMIT 5
specifies the number of rows to return. -
OFFSET 5
skips the first 5 rows.
Expected Output:
The next set of 5 employees after the top 5:
+----+---------+--------+
| id | name | salary |
+----+---------+--------+
| 1 | Frank | 67000 |
| 7 | Grace | 64000 |
| 8 | Hannah | 60000 |
| 9 | Ivan | 59000 |
| 10 | Jane | 58000 |
+----+---------+--------+
Conclusion
Selecting the top N rows in MySQL using the LIMIT
clause is efficient and easy. When faced with potential ties, ensure a stable sort order by using additional columns in the ORDER BY
. This simple technique is essential for many applications, including analytics and reporting, especially when dealing with large datasets.
By mastering these techniques, you’ll have greater control over data retrieval and manipulation in MySQL.
Beekeeper Studio Is A Free & Open Source Database GUI
Best SQL query & editor tool I have ever used. It provides everything I need to manage my database. - ⭐⭐⭐⭐⭐ Mit
Beekeeper Studio is fast, intuitive, and easy to use. Beekeeper supports loads of databases, and works great on Windows, Mac and Linux.
What Users Say About Beekeeper Studio
"Beekeeper Studio completely replaced my old SQL workflow. It's fast, intuitive, and makes database work enjoyable again."
"I've tried many database GUIs, but Beekeeper strikes the perfect balance between features and simplicity. It just works."