sql >> Database >  >> RDS >> Sqlserver

N-de record selecteren in een SQL-query

Dit is een klassieke sollicitatievraag.

In Ms SQL 2005+ kunt u de ROW_NUMBER() gebruiken zoekwoord en hebben het predikaat 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 zou je zoiets kunnen doen als

SELECT Top 1 *FROM
[tblApplications]
where [ApplicationID] In
(
    SELECT TOP 5 [ApplicationID]
    FROM [dbo].[tblApplications]
    order by applicationId Desc
)


  1. hoe getdate te formatteren in YYYYMMDDHHmmSS

  2. Kan geen verbinding maken met SQL Express-fout:26-fout bij het lokaliseren van server/instantie opgegeven)

  3. Is het mogelijk om naar één kolom te verwijzen als meerdere externe sleutels?

  4. MySQL werkt nullable datumkolom bij naar NULL