Como implementar a função TOP X WITH TIES do SQL Server no MySQL

07/08/2020

4

Olá pessoal,

Tenho uma consulta que me traz os candidatos inscritos. Nela tenho que trazer os 45 primeiros registros. Até aí tudo bem, só basta ordenar por ID e fazer um LIMIT 45 e tá resolvido. Porém, existe um outro critério, a idade. Preciso trazer além dos 45 primeiros inscritos os demais que têm a mesma idade, ou seja, se o 45º candidato tiver 30 anos e o 46º, 47º, ... também tiverem 30 anos precisam aparecer.
Alguém tem como me ajudar nisso?

Grato,

Ilano.
Responder

Posts

gambiarra.... veja se a idéia é válida.

use o select que você já possui, que vou chamar de principal:
select
   bla, bla, bla
from 
   bla
where
   bla, bla, bla
order by
   id
limit 45

e faça um union all com a própria select principal que terá - além dos filtros que você ja tem - um filtro por idade, mas não terá o limit:
select
   bla, bla, bla
from 
   bla
where
   bla, bla, bla
   and idade = (select idade
                from tabela
                where id = (select max(id) 
                            from (select principal)))


instrução completa:
select
   bla, bla, bla
from 
   bla
where
   bla, bla, bla
order by
   id
limit 45

union all

select
   bla, bla, bla
from 
   bla
where
   bla, bla, bla
   and idade = (select idade
                from tabela
                where id = (select max(id)
                            from (select principal)))
bom, acho que pode funcionar.
se você tivesse publica a tua instrução, o resultado poderia ser um pouco mais personalizado.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar