Cláusula similar ao LIMIT no SQL Server

Há tempos venho desenvolvendo sistemas usando PHP + SQLServer, e uma das coisas que senti muita falta inicialmente (neste caso, pra gerar uma paginação de resultados) foi a cláusula LIMIT, ausente na linguagem de queries da Microsoft.
Mas isso realmente não é um problema pra quem usa alguma plataforma da MS para o desenvolvimento, como VB ou .NET, que já dispõem de ferramentas para paginação, mas como não é o meu caso…

Nesta solução eu uso 3 queries aninhadas. Bastar executar e dar uma olhada pra entender como funciona.

DECLARE @page INT = 1
DECLARE @perPage INT = 10
 
SELECT * FROM
(
    SELECT TOP (@perPage) nome, telefone, email FROM
    (
        SELECT TOP (@page * @perPage) nome, telefone, email FROM clientes
        ORDER BY nome ASC
    ) AS novaTabela1 ORDER BY nome DESC
) AS novaTabela2 ORDER BY nome ASC
    • Bernerd
    • dezembro 2nd, 2010 9:19pm

    Marcelo, I`ve come just to give you congrats for the wonderful job. Thanks to you I could solve a myriad of problems. I hope you succeed on your journey to become a renowned pro, and I know you will! I have faith in you. Thanks again and Good Luck, man!
    B.

    • Guilherme
    • setembro 27th, 2012 4:46pm

    Valeu, marcelo estava a tarde inteira procurando uma solução!

    • Jonatas
    • dezembro 9th, 2013 9:04am

    Parabéns, Uma Ótima solução.

  1. Nenhum trackback ainda.