Selecting Nth Record in an SQL Query
sql, sql-server-2005
Solution
This is a classic interview question.
In Ms SQL 2005+ you can use the ROW_NUMBER() keyword and have the Predicate ROW_NUMBER = n
USE AdventureWorks;
GO
WITH OrderedOrders AS
(
SELECT SalesOrderID, OrderDate,
ROW_NUMBER() OVER (ORDER BY OrderDate) AS 'RowNumber'
FROM Sales.SalesOrderHeader
)
SELECT *
FROM OrderedOrders
WHERE RowNumber = 5;
In SQL2000 you could do something like
SELECT Top 1 *FROM
[tblApplications]
where [ApplicationID] In
(
SELECT TOP 5 [ApplicationID]
FROM [dbo].[tblApplications]
order by applicationId Desc
)
Problem
I have an SQL Query that i'm running but I only want to select a specific row. For example lets say my query was: ``` Select * from Comments ``` Lets say this returns 10 rows, I only want to select the 8th record returned by this query. I know I can do: ``` Select Top 5 * from Comments ``` To get the top 5 records of that query but I only want to select a certain record, is there anything I can put into this query to do that (similar to top). Thanks jack