Maison >base de données >tutoriel mysql >Comment répliquer la clause LIMIT de MySQL dans SQL Server ?

Comment répliquer la clause LIMIT de MySQL dans SQL Server ?

DDD
DDDoriginal
2024-12-08 02:29:11830parcourir

How to Replicate MySQL's LIMIT Clause in SQL Server?

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!

Déclaration:
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