Skip to content

SOQL: Ordering and Limiting

SOQL Ordering Hero Image

Harnessing the Power of Sorting and Limiting in SOQL to elevate Data Management Skills


In Salesforce, efficiently managing and retrieving data is crucial for effective decision-making and streamlined operations. One of the key aspects of data management is controlling the order and quantity of query results. In this post, we’ll explore how to use the ORDER BY clause for sorting and the LIMIT and OFFSET clauses for controlling the number of records returned in SOQL queries.

The ORDER BY clause in SOQL allows you to sort query results based on one or more fields. Sorting can be done in ascending or descending order, providing flexibility in how data is presented.

SELECT Name, AnnualRevenue FROM Account ORDER BY AnnualRevenue ASC

This query sorts accounts by AnnualRevenue in ascending order, from the lowest to the highest. Ascending order is the default sorting behavior in SOQL, so it does not need to be explicitly specified. However, it is considered good practice to include ASC in your query. By explicitly stating the sorting order, you enhance the readability and clarity of your query, making it immediately clear to anyone reviewing the code what the intended sorting behavior is.

SELECT Name, AnnualRevenue FROM Account ORDER BY AnnualRevenue DESC

This query sorts accounts by AnnualRevenue in descending order, from the highest to the lowest. Use DESC to explicitly specify descending order.

SELECT Name, Industry FROM Account ORDER BY Name

This query sorts accounts alphabetically by the Name field. Text fields are sorted in alphabetical order by default.

When using the ORDER BY clause in SOQL, if two or more records have identical values in the field being sorted, SOQL will return these records in an unspecified order relative to each other. This means that while the records with identical values will appear together in the sorted list, their internal order is not guaranteed to be consistent across different query executions.

To ensure a consistent and predictable order for records with identical values, you can add additional fields to the ORDER BY clause. By specifying a secondary (or tertiary) field for sorting, you can control the order of records that have the same value in the primary sorting field.

To ensure a consistent and predictable order for records with identical values, SOQL allows you to add additional fields to the ORDER BY clause. By specifying a secondary (or tertiary) field for sorting, you can control the order of records that have the same value in the primary sorting field.

SELECT Name, Industry, AnnualRevenue
FROM Account
ORDER BY Industry ASC, AnnualRevenue DESC

In this query, accounts are first sorted by Industry in ascending order (A-Z). Within each industry, accounts are further sorted by AnnualRevenue in descending order (highest first). The order of fields in the ORDER BY clause determines the sorting priority.

Another example:

SELECT Name, Industry, AnnualRevenue
FROM Account
ORDER BY AnnualRevenue ASC, Name ASC

In this query, accounts are first sorted by AnnualRevenue in ascending order. If multiple accounts have the same AnnualRevenue, they are then sorted alphabetically by Name. This approach ensures a consistent order for records with identical values in the primary sorting field, enhancing the predictability and reliability of your query results.

The following records:

NameIndustryAnnualRevenue
Tech SolutionsTechnology500,000
Alpha CorpFinance1,000,000
Beta IndustriesManufacturing500,000
Gamma EnterprisesHealthcare750,000
Delta CoTechnology1,000,000

After applying the sorting query, the records would be ordered as follows:

NameIndustryAnnualRevenue
Beta IndustriesManufacturing500,000
Tech SolutionsTechnology500,000
Gamma EnterprisesHealthcare750,000
Alpha CorpFinance1,000,000
Delta CoTechnology1,000,000

Understanding how NULL values are sorted is important for accurate data presentation.

  • NULLs Appear Last in Ascending Order
  • NULLs Appear First in Descending Order

In ascending order, NULL values appear at the end of the result set. In descending order, NULL values appear at the beginning of the result set.

LIMIT and OFFSET: Controlling Result Quantity

Section titled “LIMIT and OFFSET: Controlling Result Quantity”

The LIMIT clause is used to restrict the number of records returned by a query, while the OFFSET clause is used for pagination.

SELECT Name, AnnualRevenue
FROM Account
WHERE AnnualRevenue != NULL
ORDER BY AnnualRevenue DESC
LIMIT 10

This query retrieves the top 10 accounts with the highest AnnualRevenue. By using ORDER BY AnnualRevenue DESC, the query sorts the accounts in descending order based on their AnnualRevenue, ensuring that the highest revenue accounts appear first. The LIMIT 10 clause then restricts the result set to only the first 10 records from this sorted list.

Using ORDER BY in conjunction with LIMIT is crucial for ensuring predictable results. Without ORDER BY, the LIMIT clause would simply return an arbitrary set of records, as there would be no defined order to the data. By specifying the order, you ensure that the LIMIT clause consistently returns the top records according to your specified criteria, making your query results both meaningful and reliable.

Pagination allows you to retrieve records in chunks, making it easier to handle large datasets.

  • Page 1: First 25 Records
SELECT Name, Email FROM Contact ORDER BY Name LIMIT 25 OFFSET 0
  • Page 2: Next 25 Records
SELECT Name, Email FROM Contact ORDER BY Name LIMIT 25 OFFSET 25
  • Page 3: Records 51–75
SELECT Name, Email FROM Contact ORDER BY Name LIMIT 25 OFFSET 50

The OFFSET clause specifies the starting point for the records to be returned. Note that the maximum OFFSET value is 2,000. For larger datasets, consider using cursor-based pagination to efficiently navigate through records.


By mastering these sorting and limiting techniques, you can significantly enhance your ability to manage and present Salesforce data effectively. These skills are essential for optimizing data retrieval processes, ensuring that you can quickly access the most relevant information. By ordering your data, you can present it in a way that highlights key insights and trends, making it easier for stakeholders to understand and act upon. Limiting your results allows you to focus on the most critical data points, reducing information overload and improving decision-making efficiency. Together, these techniques contribute to a more streamlined user experience and empower your organization to make informed, data-driven decisions.