Skip to main content
Documents
Share
LinkedIn
Facebook
Twitter
Copy
ClausesStatementsKeywordsExpressionsFunctions

MySQL ORDER BY Clause

The `ORDER BY` clause in MySQL is used to sort the result set of a query by one or more columns. It allows for ascending or descending order sorting, which can help organize data meaningfully.

Usage

The `ORDER BY` clause is applied at the end of a `SELECT` statement to sort the data retrieved. You can specify ascending order using `ASC` (default) or descending order using `DESC`.

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;

In this syntax, `ORDER BY column1` sorts the result based on `column1`, and subsequent columns can be added for secondary sorting.

Examples

1. Basic Sorting

SELECT * 
FROM products
ORDER BY price;

This example sorts the `products` table by the `price` column in ascending order by default.

2. Descending Order

SELECT first_name, last_name
FROM employees
ORDER BY last_name DESC;

Here, the `employees` table is sorted by `last_name` in descending order, which is useful for reversing alphabetical order.

3. Multi-Column Sorting

SELECT first_name, last_name, department
FROM employees
ORDER BY department ASC, last_name DESC;

This example sorts the `employees` table first by `department` in ascending order and then by `last_name` in descending order within each department group.

4. Sorting by Expressions

SELECT product_name, price, quantity, (price * quantity) AS total_value
FROM products
ORDER BY total_value DESC;

In this example, the `products` table is sorted by a calculated field `total_value`, which is an expression created using an alias.

Tips and Best Practices

  • Use column indexes. Sorting is more efficient on indexed columns, reducing query time.
  • Limit results for performance. Combine `ORDER BY` with `LIMIT` to control the number of returned rows and enhance performance.
  • Specify sort direction. Explicitly indicate sort direction (ASC or DESC) for clarity, especially in complex queries.
  • Avoid unnecessary sorting. Only use `ORDER BY` when a specific order is needed to minimize query overhead.
  • Sort by expressions and aliases. Utilize expressions or calculated fields, and sort by their aliases for more dynamic ordering.
  • Handling NULL values. By default, NULL values are sorted first in ascending order and last in descending order. Adjustments can be made using expressions if a different order is desired.