When writing T-SQL code, at some point, under certain circumstances, you might get the error message: ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
Explaining the Error Message with an Example
But let’s take things from the beginning with the use of an example.
First, let’s create a temporary table:
CREATE TABLE #tmpTable ( id INT PRIMARY KEY , code VARCHAR(50) , age INT );
Then, let’s populate the table with some sample data:
INSERT INTO #tmpTable VALUES ( 1, 'code 1', 25 ) , ( 2, 'code 2', 27 ) , ( 3, 'code 3', 29 ) , ( 4, 'code 4', 25 ) , ( 5, 'code 5', 21 ), ( 6, 'code 5', 21 );
Reproducing the Error Message
Now let’s run the below query, which tries to retrieve the distinct “age” values along with sorting the results based on the id:
SELECT DISTINCT age FROM #tmpTable ORDER BY code;
However, when we execute the above query, we get the error message:
ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
Resolving the Issue
As the error message indicates, you are using in the ORDER BY clause, a column which is not included in the SELECT list. In this case this column is “code”.
Therefore, you definitely need to include in your query the column “code”.
So, for this example, you can try running the query as below:
SELECT DISTINCT age,code FROM #tmpTable ORDER BY code;
Other SQL Server troubleshooting articles to check on SQLNetHub:
- Error converting data type varchar to float
- Operating System Error 170 (Requested Resource is in use)
- There is no SQL Server Failover Cluster Available to Join
- Installing SQL Server 2016 on Windows Server 2012 R2: Rule KB2919355 failed
- Setup failed to start on the remote machine. Check the Task scheduler event log on the remote machine.
- A connection was successfully established with the server, but then an error occurred during the login process.
- SQL Server 2008 R2 Service Pack Installation Fails – Element not found. (Exception from HRESULT: 0x80070490)
- There is insufficient system memory in resource pool ‘internal’ to run this query.
- Argument data type ntext is invalid for argument …
- Could not load file or assembly ‘Microsoft.SqlServer.Smo, Version=10.0.0.0, …
- … more
Subscribe to our newsletter and stay up to date!
Check out our latest software releases!
Check out Artemakis’s eBooks
Rate this article:
Reference: SQLNetHub.com (https://www.sqlnethub.com)