Maison > base de données > tutoriel mysql > Comment imiter la clause LIMIT de MySQL dans Microsoft SQL Server 2000 ?

Comment imiter la clause LIMIT de MySQL dans Microsoft SQL Server 2000 ?

Patricia Arquette
Libérer: 2025-01-08 07:24:11
original
700 Les gens l'ont consulté

How to Mimic MySQL's LIMIT Clause in Microsoft SQL Server 2000?

Réplication de la fonctionnalité LIMIT de MySQL dans Microsoft SQL Server 2000

La clause LIMIT de MySQL simplifie la récupération d'un nombre spécifique de lignes. SQL Server 2000 n'a pas d'équivalent direct, ce qui nécessite des solutions de contournement. Voici plusieurs méthodes pour obtenir des résultats similaires :

Méthode 1 : Requêtes imbriquées (SQL Server 2000)

Cette approche utilise des instructions SELECT imbriquées pour filtrer les lignes dans une plage définie :

<code class="language-sql">SELECT TOP 25 *
FROM (
    SELECT TOP 75 *
    FROM table
    ORDER BY field ASC
) a
ORDER BY field DESC;</code>
Copier après la connexion

Cela récupère les lignes 26 à 75 après la commande par field. Remarque : Cette méthode est moins efficace pour les grands ensembles de données et ne gère pas correctement les scénarios ne comportant pas plusieurs tailles de page pour la dernière page.

Méthode 2 : exploiter une colonne unique (SQL Server 2000)

Si votre table possède une colonne unique (par exemple, une clé primaire), cette technique exclut les lignes déjà sélectionnées :

<code class="language-sql">SELECT TOP n *
FROM tablename
WHERE key NOT IN (
    SELECT TOP x key
    FROM tablename
    ORDER BY key
);</code>
Copier après la connexion

Cela sélectionne les n lignes, à l'exclusion des x premières lignes, classées par colonne key. C'est également moins efficace pour les grandes tables.

Méthode 3 : Utilisation de ROW_NUMBER() (SQL Server 2005 et versions ultérieures)

Pour SQL Server 2005 et supérieur, la fonction ROW_NUMBER() offre une solution plus élégante :

<code class="language-sql">SELECT z2.*
FROM (
    SELECT ROW_NUMBER() OVER (ORDER BY id) AS rownum, z1.*
    FROM ( ...original SQL query... ) z1
) z2
WHERE z2.rownum BETWEEN @offset + 1 AND @offset + @count;</code>
Copier après la connexion

Cela attribue un numéro de ligne à chaque résultat, puis filtre en fonction d'un décalage spécifié (@offset) et d'un nombre (@count). Il s'agit généralement de la méthode la plus efficace et la plus flexible pour les versions plus récentes de SQL Server.

Méthode 4 : instruction EXCEPT (SQL Server 2005 et versions ultérieures)

Une autre option pour SQL Server 2005 et versions ultérieures utilise l'opérateur EXCEPT set :

<code class="language-sql">SELECT * FROM (
    SELECT TOP 75 COL1, COL2
    FROM MYTABLE ORDER BY COL3
) AS foo
EXCEPT
SELECT * FROM (
    SELECT TOP 50 COL1, COL2
    FROM MYTABLE ORDER BY COL3
) AS bar;</code>
Copier après la connexion

Cela sélectionne les lignes 51 à 75 après la commande par COL3. Semblable à l'approche ROW_NUMBER(), il s'agit d'une solution plus efficace pour les versions plus récentes de SQL Server. Cependant, c'est moins intuitif que ROW_NUMBER() pour les scénarios complexes. Choisissez la méthode la mieux adaptée à votre version de SQL Server et à la taille de votre ensemble de données.

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