Maison > base de données > tutoriel mysql > Comment puis-je limiter le nombre d'enregistrements récupérés dans SQL Server sans utiliser LIMIT ?

Comment puis-je limiter le nombre d'enregistrements récupérés dans SQL Server sans utiliser LIMIT ?

Linda Hamilton
Libérer: 2025-01-18 18:34:11
original
532 Les gens l'ont consulté

How Can I Limit the Number of Records Retrieved in SQL Server Without Using LIMIT?

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal