Limite d'enregistrement dans SQL Server : LIMIT dépassée
SQL Server ne prend pas en charge la fonction LIMIT ou l'opérateur OFFSET couramment utilisés dans d'autres systèmes de bases de données. Cela peut être un défi lorsque l'on limite le nombre d'enregistrements récupérés.
Cependant, SQL Server propose un autre moyen d'obtenir des fonctionnalités similaires. Une solution consiste à utiliser la fonction ROW_NUMBER() avec une clause WHERE :
<code class="language-sql">SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY name) AS row FROM sys.databases ) a WHERE row > 5 AND row <= 10</code>
Cette sous-requête attribue à chaque ligne un numéro de ligne, puis filtre les résultats pour inclure uniquement les lignes dans la plage spécifiée.
Une autre façon consiste à utiliser la clause TOP :
<code class="language-sql">SELECT TOP 10 * FROM stuff</code>
Bien que TOP limite le nombre de lignes renvoyées, il ne permet pas de contrôler la position de départ.
Pourquoi SQL Server n’a-t-il pas LIMIT ?
L'absence de fonction LIMIT dans SQL Server peut être due à des considérations de performances. L'utilisation de LIMIT peut entraîner une dégradation des performances, en particulier sur les grandes tables. SQL Server donne la priorité à l'optimisation du temps d'exécution des requêtes.
Utiliser OFFSET et RANGÉES
Pour SQL Server 2012 et versions ultérieures, vous pouvez utiliser les mots-clés OFFSET et ROWS pour avoir un contrôle plus granulaire sur l'ensemble de résultats :
<code class="language-sql">SELECT * FROM sys.databases ORDER BY name OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY</code>
Cette requête ignore les 5 premières lignes et récupère les 5 lignes suivantes, offrant des capacités de limitation comparables à LIMIT.
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!