L'équivalent SQL Server de la clause LIMIT de MySQL
La clause LIMIT de MySQL, qui restreint le nombre de lignes renvoyées par une requête, n'a pas d'équivalent direct dans SQL Server. Cela peut être frustrant, mais il existe plusieurs solutions de contournement disponibles.
Syntaxe OFFSET / FETCH (SQL Server 2012 et versions ultérieures)
Dans SQL Server 2012 et versions ultérieures, l'ANSI La syntaxe standard OFFSET / FETCH peut être utilisée pour la pagination. La requête suivante illustre cette syntaxe :
SELECT ID, Name, Price, Image FROM Products ORDER BY ID ASC OFFSET (@start_from - 1) ROWS FETCH NEXT @items_on_page ROWS ONLY;
Méthode ROW_NUMBER() (avant SQL Server 2012)
Avant SQL Server 2012, la méthode ROW_NUMBER() peut être utilisé pour simuler la clause LIMIT :
WITH o AS ( SELECT TOP ((@start_from - 1) + @items_on_page) RowNum = ROW_NUMBER() OVER (ORDER BY ID ASC) /* , other columns */ FROM Products ) SELECT RowNum /* , other columns */ FROM o WHERE RowNum >= @start_from ORDER BY RowNum;
Autre solutions de contournement
En plus des méthodes décrites ci-dessus, il existe diverses autres solutions de contournement disponibles, notamment l'utilisation de curseurs ou de tables temporaires. Cependant, ces solutions sont généralement moins efficaces et plus complexes.
Il est important de noter que Microsoft a reconnu les limites des mécanismes de pagination actuels et a exprimé son intérêt pour l'ajout de la prise en charge native de LIMIT à SQL Server dans les versions futures.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!