What does DESC do in SQL?
Categories:
Understanding the DESC Keyword in SQL: Sorting Data in Descending Order

Explore the fundamental role of the DESC keyword in SQL for ordering query results, enhancing data readability and analysis.
In the world of relational databases, retrieving data in a specific order is crucial for readability, analysis, and presentation. SQL provides the ORDER BY
clause for this purpose, and within this clause, the DESC
keyword plays a vital role. This article will delve into what DESC
does, how to use it effectively, and common scenarios where it becomes indispensable.
What is DESC in SQL?
The DESC
keyword in SQL stands for Descending. It is used in conjunction with the ORDER BY
clause to sort the result set of a SELECT
statement in descending order. This means that for numeric data, values will be arranged from largest to smallest. For character data, it will sort alphabetically from Z to A. For date/time data, it will sort from the most recent to the oldest.
ORDER BY
without specifying ASC
(Ascending) or DESC
, the results will be sorted in ascending order (ASC
). ASC
is the implicit default.Basic Syntax and Usage
The DESC
keyword is placed immediately after the column name you wish to sort by within the ORDER BY
clause. You can sort by one or multiple columns, applying DESC
to each column individually if needed.
SELECT column1, column2, ...
FROM table_name
ORDER BY column_name DESC;
Basic SQL syntax for sorting in descending order.
Let's consider a practical example. Imagine you have a table named Products
with columns like ProductID
, ProductName
, and Price
. If you want to see the products with the highest prices first, you would use DESC
.
SELECT ProductID, ProductName, Price
FROM Products
ORDER BY Price DESC;
Sorting products by price in descending order.
Sorting by Multiple Columns
You can sort by multiple columns by listing them after ORDER BY
, separated by commas. Each column can have its own sort order (ASC
or DESC
). The sorting is applied sequentially: the result set is first sorted by the first column, then rows with identical values in the first column are sorted by the second column, and so on.
SELECT EmployeeID, LastName, FirstName, Salary
FROM Employees
ORDER BY Salary DESC, LastName ASC;
Sorting employees by salary (descending) and then by last name (ascending).
In the example above, employees will first be ordered by their Salary
from highest to lowest. If two employees have the same salary, they will then be ordered alphabetically by their LastName
.
flowchart TD A[Start Query] --> B{SELECT ... FROM ...} B --> C{ORDER BY Clause?} C -- Yes --> D{Column 1 specified?} D -- Yes --> E{DESC keyword?} E -- Yes --> F[Sort Column 1 Descending] E -- No (or ASC) --> G[Sort Column 1 Ascending] F --> H{More Columns?} G --> H H -- Yes --> I{Column 2 specified?} I -- Yes --> J{DESC keyword?} J -- Yes --> K[Sort Column 2 Descending (within Column 1 groups)] J -- No (or ASC) --> L[Sort Column 2 Ascending (within Column 1 groups)] K --> M[Return Sorted Result] L --> M H -- No --> M C -- No --> M
Flowchart illustrating the SQL ORDER BY ... DESC process.
Common Use Cases for DESC
The DESC
keyword is incredibly useful in many real-world scenarios:
1. Finding Top Performers/Values
Quickly identify the highest-priced products, employees with the highest salaries, or the most recent transactions. This is often combined with LIMIT
(or TOP
in SQL Server) to get a specific number of top results.
2. Displaying Recent Data
When dealing with timestamps or dates, DESC
is essential for showing the most recent entries first, such as the latest blog posts, comments, or system logs.
3. Ranking and Leaderboards
For applications requiring rankings (e.g., game scores, sales performance), DESC
helps arrange data from best to worst.
4. Analyzing Trends
While not a direct analytical tool, presenting data in descending order can sometimes make negative trends or outliers more immediately apparent.
ORDER BY ... DESC
with LIMIT
(e.g., LIMIT 10
), ensure your query is optimized with appropriate indexes on the sorted columns for better performance, especially on large datasets.