Je commence à jouer avec ASP.NET MVC et je suis tombé sur la question de vouloir faire un peu de pagination de base. Donc je cette simple déclaration LINQ (en utilisant la base de données Northwind) pour obtenir 10 articles pour une page spécifique:Que fait exactement la clause "Over" dans T-Sql?
var q = (from p in db.Orders
orderby p.OrderDate descending
select p).Skip(currentPage * pageAmount).Take(pageAmount);
Il fonctionne bien, mais quand je débogués, j'étais curieux de ce que le SQL réel a été généré par LINQ à Sql. Ce fut la sortie:
SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[RequiredDate], [t1].[ShippedDate], [t1].[ShipVia], [t1].[Freight], [t1].[ShipName], [t1].[ShipAddress], [t1].[ShipCity], [t1].[ShipRegion], [t1].[ShipPostalCode], [t1].[ShipCountry]
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY [t0].[OrderDate] DESC) AS [ROW_NUMBER], [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[RequiredDate], [t0].[ShippedDate], [t0].[ShipVia], [t0].[Freight], [t0].[ShipName], [t0].[ShipAddress], [t0].[ShipCity], [t0].[ShipRegion], [t0].[ShipPostalCode], [t0].[ShipCountry]
FROM [dbo].[Orders] AS [t0]
) AS [t1]
WHERE [t1].[ROW_NUMBER] BETWEEN @p0 + 1 AND @p0 + @p1
ORDER BY [t1].[ROW_NUMBER]
Maintenant, je ne suis pas expert SQL du tout, ce qui est la raison pour laquelle je ne l'ai jamais vu la clause « OVER ». Je suis juste curieux d'un niveau élevé de savoir exactement ce qu'il fait et quand est-il utilisé?
Merci! Fait beaucoup de sens. – BFree